Java 浮点型

Java 浮点类型 及 精度

单精度 与 双精度

在这里插入图片描述

精度 与 有效位

在这里插入图片描述
在这里插入图片描述

精度缺失示例

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

float

在这里插入图片描述

double

在这里插入图片描述

浮点数的使用

  • 比较两个浮点数是否相等不能使用==,而是比较两个浮点数的差的绝对值
    在这里插入图片描述
  • 减少 float 的使用
  • 金融场景一定要使用 BigDecimal 类,才能确保不会有精度缺失

精度缺失原因

  • 在计算机任何数字都需要先转换成二进制数,正如10进制数中不能精确表示1/3,二进制也会出现不能精确表示的十进制数
    在这里插入图片描述
    在这里插入图片描述

IEEE754 浮点数的存储的与表示

  • 规范化
    在这里插入图片描述
  • 指数 与 偏移指数位
    在这里插入图片描述
    在这里插入图片描述
  • 尾数 与 尾数位
    在这里插入图片描述
    在这里插入图片描述
  • 浮点数的存储
    在这里插入图片描述
    在这里插入图片描述

总结

在这里插入图片描述
在这里插入图片描述

  • 如上图所示用单精度的浮点数表示的10进制数第8位,因为二进制存储和表达的原因,无法被准确表达。同理,双精度的浮点数表示10进制数时,第16位也是无法准确表达

版权声明:本文为animatelife原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。