double类型的精度问题【计算时有误差】。 (0.1 * 0.1 , 1.0 - 0.9)

如果你认为 if ( 0.1*0.1 ==  0.01 ) 的结果是true


那你就错了!!


以下计算得到的结果:

	System.out.println(0.1*0.1);
	System.out.println(1.0-0.9);

0.010000000000000002

0.09999999999999998


原因:

浮点数数值采用二进制表示,在二进制系统之无法精确表示1/10,就像十进制无法表示1/3一样,

这样就产生了误差,如果想尽量避免误差,就应用BigDecimal类来运算,尤其是在金融领域.

你可能感兴趣的:(java,#,经典,金融)