先看一程序:
1 public class FloatPoint {
2 public static void main(String args[]) {
3 float f = 0.0f;
4 for (int i = 0; i < 10; i++) {
5 f += 0.1f;
6 System.out.println(f);
7 }
8 }
9 }
程序输出结果:
0.1
0.2
0.3
0.4
0.5
0.6
0.70000005
0.8000001
0.9000001
1.0000001
当加到第七次时,产生5.0E-8的误差,十次加完,误差就是1.0E-7。
所以在商业应用开发中,涉及到金额等浮点数计算时,要控制好误差的大小。
如把输出语句改成
DecimalFormat df = new DecimalFormat("0.0");
System.out.println(df.format(f));
输出结果为:
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
关于浮点数的精确计算,在这里推荐两篇文章:
http://blog.csdn.net/sqlxx/archive/2004/09/13/103084.aspx
http://blog.csdn.net/stevene/archive/2006/01/22/586089.aspx
第一次开博客,有些工具的用法不是很明白。希望展现效果会好点,请见谅。