站内搜索: 请输入搜索关键词

当前页面: 开发资料首页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进制的数字,就不会出现这种情况.


把结果格式化一下


谢谢各位

楼主结贴好及时,赞一个!!!!


↑返回目录
前一篇: action返回的list为什么iframe里用logic:iterate得不到?
后一篇: 怎么样去除字符串中间的空格?例如String str="acb aaa"