【问题标题】:BigDecimal with smart precision (scale) [duplicate]具有智能精度(比例)的 BigDecimal [重复]
【发布时间】:2018-03-30 21:58:52
【问题描述】:

如何根据十进制圆度设置通用缩放作为数字

BigDecimal num = new BigDecimal(25)

BigDecimal result = num.divide(new BigDecimal(13), 7, RoundingMode.HALF_EVEN)
// 1.9230769

但是

BigDecimal result = num.divide(new BigDecimal(10), 7, RoundingMode.HALF_EVEN) 
// 2.5000000 that should  be 2.5

大概分析余数?

这种情况的 API 中有什么东西吗?

【问题讨论】:

  • BigDecimal.stripTrailingZeros() 也许?例如BigDecimal result = num.divide(new BigDecimal(13), 7, RoundingMode.HALF_EVEN).stripTrailingZeros(); 见:BigDecimal.stripTrailingZeros()Removing trailing zeros from BigDecimal in Java
  • @d.j.brown 它工作 10 倍你可能会回答我会接受你的回答的问题
  • 谢谢,但是我发现的另一个问题已经回答了这个问题,因此重新回答没有价值,请参阅上面的链接。这应该作为重复或删除关闭。
  • @d.j.brown 我明白了
  • 一个合适的答案是使用 MathContext 并设置精度,因为 op 专门使用除法。链接的问题是关于删除零的具体问题。

标签: java rounding scaling bigdecimal autoscaling


【解决方案1】:

https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html#stripTrailingZeros--

BigDecimal bd = new BigDecimal("235.000");
System.out.println( bd.stripTrailingZeros() );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 2020-07-28
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多