问题描述
运行以下程序.
for (float i = 0; i < 1; i += 0.1) {
System.out.println(i);
}
// 运行结果在0.6以后的数字发生了不规则的变化.
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.70000005
0.8000001
0.9000001
产生原因
查阅了许多资料,自己总结了一个解释。
因为在计算机底层存储数据时,均是存储为二进制类型,0.7f的二进制为无限循环小数,
而float类型存储的精度较 低,这也就导致了输出的数字会发生不规则变化。
因此有了float的精度不高的说法。