bigdecimal减法导致指数

时间:2015-12-03 06:57:43

标签: java bigdecimal exponential

我有以下代码。

BigDecimal b1 = new BigDecimal("1.12345678912345678");
    BigDecimal b2 = new BigDecimal("1.12345678912345678");
    System.out.println(b1.subtract(b2));

输出是: 0E-17

如何避免指数格式? bigdecimal的方法toPlainString将返回String,我不希望这样。我希望我的bigdecimal对象在那里没有指数值。

1 个答案:

答案 0 :(得分:2)

您正在调用println(Object)方法,它在内部使用Object.toString()方法。

来自JavaDoc of BigDecimal.toString()

  

如果需要指数,则返回此BigDecimal的字符串表示形式,使用科学记数法。

关于toPlainString()方法并且想要一个大十字形对象的陈述没有意义,因为差异只在toString()方法和toPlainString()方法之间( Both)其中返回不同格式的字符串表示)。在这两种情况下,您都会拥有相同 BigDecimal对象。差异只在印刷时。