java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言, 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台 (即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se)) 的总称
下面小编就为大家带来一篇浅谈 Java double 相乘的结果偏差小问题小编觉得挺不错的, 现在就分享给大家, 也给大家做个参考一起跟随小编过来看看吧
看下面的一段代码的运行结果:
- 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);
- }
- }
来源: http://www.phperz.com/article/18/0221/358707.html