先看一程序:
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
第一次開博客,有些工具的用法不是很明白。希望展現效果會好點,請見諒。