Java 浮点类型 及 精度
单精度 与 双精度

精度 与 有效位


精度缺失示例
- 产生精度缺失的原因是超出了浮点型的有效位数
float

double

浮点数的使用
- 比较两个浮点数是否相等不能使用
==,而是比较两个浮点数的差的绝对值
- 减少 float 的使用
- 金融场景一定要使用 BigDecimal 类,才能确保不会有精度缺失
精度缺失原因
- 在计算机任何数字都需要先转换成二进制数,正如10进制数中不能精确表示1/3,二进制也会出现不能精确表示的十进制数


IEEE754 浮点数的存储的与表示
- 规范化

- 指数 与 偏移指数位


- 尾数 与 尾数位


- 浮点数的存储


总结


- 如上图所示用单精度的浮点数表示的10进制数第8位,因为二进制存储和表达的原因,无法被准确表达。同理,双精度的浮点数表示10进制数时,第16位也是无法准确表达
版权声明:本文为animatelife原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。