Java double 相乘的小问题记录

来源:互联网 发布:知鱼怎么烧 编辑:程序博客网 时间:2024/06/05 06:29
看下面的一段代码的运行结果:
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 替换,才能得到我们想要的结果

解决方法二:

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);    }}


0 0