我试过下面的代码。但在使用BigDecimal进行减法时会得到不同的结果。java bigdecimal subraction失败
double d1 = 0.1;
double d2 = 0.1;
System.out.println("double result: "+ (d2-d1));
float f1 = 0.1F;
float f2 = 0.1F;
System.out.println("float result: "+ (f2-f1));
BigDecimal b1 = new BigDecimal(0.01);
BigDecimal b2 = new BigDecimal(0.01);
b1 = b1.subtract(b2);
System.out.println("BigDecimal result: "+ b1);
结果:
double result: 0.0
float result: 0.0
BigDecimal result: 0E-59
我还在这方面的工作。任何人都可以请澄清。
0E-59仍然是零,并且规模是从输入的刻度的。 – EJP 2013-03-16 00:24:05
答案涵盖了原因,下面是一个简单的提示:如果您使用BigDecimal,则需要一些有用的缩放比例,因此,当您调用具有某个double值的C-tor时,始终需要包含MathContext。 – bestsss 2013-03-17 11:05:38