【问题标题】:Confused about result of BigDecimal [closed]对 BigDecimal 的结果感到困惑 [关闭]
【发布时间】:2019-06-02 20:26:09
【问题描述】:

为什么BigDecimal(9105.0).div(BigDecimal(100.toDouble()))=91.0 而不是 91.05。如何保持小数的精度?

【问题讨论】:

  • System.out.println(new BigDecimal(9105).divide(new BigDecimal(100)).toString()); 为我打印91.05。你用的是什么代码?
  • 编辑了代码,试试看。 91.0 而不是 91.05
  • sn-p 不是有效的 Java 代码。你能解释一下(并去掉标签吗?)
  • 那不是 Java 代码,例如100.toDouble() 肯定不是有效的 Java。请指定您实际使用的语言,或指定您正在使用的真实 Java 代码。

标签: java bigdecimal


【解决方案1】:

您使用 .div 方法而不是 .divide 方法

.div 的 kotlin 实现是:

@kotlin.internal.InlineOnly
public inline operator fun BigDecimal.div(other: BigDecimal): BigDecimal = this.divide(other, RoundingMode.HALF_EVEN)

如您所见,自动激活了 RoundingMode

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    • 2012-05-03
    • 1970-01-01
    相关资源
    最近更新 更多