? ? 今天在一本书上看到的,觉得很有道理,又涨知识了,就来分享一下.
? ?1.我的第一反应就是为true,因为'-'的运算等级比'=='高,所以0.4==0.4,
然后就是true,可是这是错的
?
? ? 2.代码演示:
??
class="java" name="code">package Test; import java.math.BigDecimal; public class sss { public static void main(String[] args) { sss ss = new sss(); ss.ImpreciseResult(); ss.PrecisionResult(); } public void ImpreciseResult(){ System.out.println(3-2.6);//输出3和2.6的差值 System.out.println(3-2.6==0.4);//输出比较结果 } public void PrecisionResult(){ BigDecimal x = new BigDecimal("3");//创建3的BigDecimal对象 BigDecimal y = new BigDecimal("2.6");//创建2.6的BigDecimal对象 BigDecimal z=x.subtract(y);//计算3和2.6的差值 double value=z.doubleValue();//转成double System.out.println(value);//计算结果 System.out.println(value==0.4);//比较结果 } }
??
? 3.运行结果:
??
??
?
? 看到了吧,原因是:Java中基本类型的浮点数运算是不精确的,在实际中,为了得到精确的计算结果,对于浮点数的运算一般不使用基本数据类型来实现,而是使用BigDecimal类实现.
? ?希望对你有帮助.
?
?