我試過下面的代碼。但在使用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