真善美

勇于承担责任; 如果你做不到,要提前跟别人说明,不要等到事情发生后再解释。

  BlogJava :: 首页 ::  :: 联系 :: 聚合  :: 管理 ::
  55 随笔 :: 0 文章 :: 29 评论 :: 0 Trackbacks
先看一程序:
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
第一次开博客,有些工具的用法不是很明白。希望展现效果会好点,请见谅。
posted on 2007-06-19 14:59 真善美 阅读(298) 评论(0)  编辑  收藏 所属分类: Java学习