当前页面: 开发资料首页 → JSP 专题 → 求教:10000*0.00145=14.499999999999998。。这是怎么回事
求教:10000*0.00145=14.499999999999998。。这是怎么回事
摘要: 求教:10000*0.00145=14.499999999999998。。这是怎么回事
10000*0.00145=14.499999999999998 不知道大家有没有遇到类似的问题,如何解决
好像和double型有关。
用BigDecimal
呵呵,没有注意过,,学习。
任何涉及精度的计算,最后不要使用double 和 float型,一般有以下两种替代解决方案:
1。使用BigDecimal类:
BigDecimal ten = new BigDecimal("10000");
BigDecimal t = new BigDecimal("0.00145");
System.out.println("10000*0100145=" + ten.multiply(t));
2。将数值全部转化成整型后再进行计算
浮点型都是不精确的。BigDecimal也是一样。
你可以通过java.text.NumberFormat对浮点型的值进行格式化,转换成字符型。
如:
double d=1000010000*0.00145d;
System.out.println(d);
java.math.BigDecimal big=new java.math.BigDecimal(d);
System.out.println(big);
java.text.NumberFormat nf=java.text.NumberFormat.getInstance();
System.out.println(nf.format(d));
基础太菜 看得头晕了
原因是计算机最终是搞成二进制来计算的.
如果可以精确转化成2进制的数字,就不会出现这种情况.
把结果格式化一下
谢谢各位
楼主结贴好及时,赞一个!!!!