具有智能精度(比例)的 BigDecimal [重复]
Posted
技术标签:
【中文标题】具有智能精度(比例)的 BigDecimal [重复]【英文标题】:BigDecimal with smart precision (scale) [duplicate] 【发布时间】: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 专门使用除法。链接的问题是关于删除零的具体问题。
【参考方案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() );
【讨论】:
以上是关于具有智能精度(比例)的 BigDecimal [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何将具有 Decimal 的 spark DataFrame 转换为具有相同精度的 BigDecimal 的 Dataset?