这个问题应该是基础中的基础,众所周知,这是一个不可避免的浮点数精度丢失问题,同十进制一样,二进制中也会存在无限循环小数,而计算机对浮点数的表示通常是用 32 或 64 位的二进制,这使得在二进制的表达上必须采用“截断”的手段丢掉一些二进制位
@Test
public strictfp void test() {
System.out.println(0.1f + 0.2f == 0.3f);
System.out.println(0.1 + 0.2 == 0.3);
}
返回结果
true
false