何时BigDecimal使用输入double和BigDecimal输入String不同的结果似乎出现.
BigDecimal a = new BigDecimal(0.333333333);
BigDecimal b = new BigDecimal(0.666666666);
BigDecimal c = new BigDecimal("0.333333333");
BigDecimal d = new BigDecimal("0.666666666");
BigDecimal x = a.multiply(b);
BigDecimal y = c.multiply(d);
System.out.println(x);
System.out.println(y);
Run Code Online (Sandbox Code Playgroud)
x输出为
0.222222221777777790569747304508155316795087227497352441864147715340493949298661391367204487323760986328125
Run Code Online (Sandbox Code Playgroud)
而你是
0.222222221777777778
Run Code Online (Sandbox Code Playgroud)
我错误地说这是因为双重不精确?但既然这是一个BigDecimal,不应该是一样的吗?
我正在寻找一种在Java中乘以两个浮点数的精确方法,并且我读到我应该使用BigDecimal,但它不能按预期工作.我究竟做错了什么?
我的代码:
BigDecimal a = new BigDecimal(3.53);
BigDecimal b = new BigDecimal(3.59);
BigDecimal c = a.multiply(b);
System.out.println(c);
Run Code Online (Sandbox Code Playgroud)
结果:
12.672699999999998796873512674210388041622697702955394242845497954075284496866515837609767913818359375
Run Code Online (Sandbox Code Playgroud)
预期结果:
12.6727
Run Code Online (Sandbox Code Playgroud)