【问题标题】:bigdecimal subtraction results in exponentialbigdecimal 减法导致指数
【发布时间】:2015-12-03 06:57:42
【问题描述】:

我有以下代码。

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

输出是: 0E-17

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

【问题讨论】:

    标签: java bigdecimal exponential


    【解决方案1】:

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

    来自JavaDoc of BigDecimal.toString()

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

    您关于 toPlainString() 方法和想要一个 bigdecimal 对象的说法没有意义,因为区别仅在 toString() 方法和 toPlainString() 方法之间(两者都返回不同的字符串表示形式格式)。在这两种情况下,您都将拥有 same BigDecimal 对象。不同之处仅在于打印时。

    【讨论】:

    • 其实我不想打印。假设结果是 b3 = b1- b2。现在我想将 b3 添加到 b4。我的目标不是打印。但要做一些进一步的计算。这可能吗?
    • @user2354566,是的,有可能...只需对对象进行所有计算...最后,当您想将其打印出来时,请使用 toPlainString() 方法。
    猜你喜欢
    • 2022-01-05
    • 1970-01-01
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    相关资源
    最近更新 更多