浅谈Java double 相乘的结果偏差小问题
2017-01-22 10:16
302 查看
看下面的一段代码的运行结果:
public class TestDouble { public static void main(String[] args) { double d =538.8; System.out.println(d*100); }
输出结果很意外的不是 53880 而是53879.99999999999
解决方法一:
538.8*100 用*10*10 替换,才能得到我们想要的结果
538.8*10000 用 100*100替换。
解决方法二:
public class TestDouble { public static void main(String[] args) { double d =538.8; BigDecimal a1 = new BigDecimal(Double.toString(d)); BigDecimal b1 = new BigDecimal(Double.toString(100)); BigDecimal result = a1.multiply(b1);// 相乘结果 System.out.println(result); BigDecimal one = new BigDecimal("1"); double a = result.divide(one,2,BigDecimal.ROUND_HALF_UP).doubleValue();//保留1位数 System.out.println(a); } }
以上这篇浅谈Java double 相乘的结果偏差小问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- 深入分析C++中两个大数相乘结果不正确的问题
- .net1.1中 整除结果不一至的问题.这应该是.NET1.1的一个bug.
- 问个问题:艺术品是上帝和艺术家之间合作的结果,并且艺术家做的越少,这个艺术品越好?如何从软件的角度去看待呢?
- 解决"当前命令发生了严重错误。应放弃任何可能产生的结果。"的问题
- SQL SERVER 2005的一个怪问题: 在查询结果面板中编辑失败.
- java 既然出现double类型×2的n次方的时候计算结果出现偏差
- Lucene搜索结果排序问题(按时间倒序排的替代解决方法)
- 将遗传算法用于二维下料问题的一些结果
- 在应用AOP缓存方法执行的结果中遇到的问题,请指点
- 多个表联合查询的一些问题解决,用一个表里面的查询结果来排除另外一个表的查询结果
- 用Spring和EHCache实现方法结果缓存所注意的问题
- 使用ODBC和OLEDB两种方式执行同一个存储过程,结果不同的问题!
- SQL查询结果的合并问题
- asp.net Global.asax中Session_End不能执行问题最终解释与调试结果
- 解决问题:当前命令发生了严重错误。应放弃任何可能产生的结果
- 希望现在有MaxtoCode的朋友把测试结果或问题在此贴内反映
- 一道C语言面试题——大数相乘的问题
- 奇怪问题:使用Request.QueryString传递一个中文参数,结果少了一个字!
- sql结果记录横向转换问题
- 今天编译emacs23,出现错误,结果是换行符的问题