java - BigDecimal 方法发送格式化数字

标签 java rounding bigdecimal

我正在尝试将 BigDecimals 四舍五入到小数点后三位。例如,假设我有一些

BigDecimal  X = 1362.59633

我想要得到:

1362.596

这就是我正在做的事情:

BigDecimal Y = X.round(new MathContext(3));

但我不断得到这个:1.36E+3。 这种情况我该怎么办? 谢谢

最佳答案

您实际上不必四舍五入,但必须设置 BigDecimal 的小数位数:

BigDecimal X = new BigDecimal("1362.59633");
X = X.setScale(3, BigDecimal.ROUND_HALF_UP);
System.out.println(X.doubleValue());

这将打印出1362.596

请注意,setScale 返回一个新的 BigDecimal,因此您必须像我在示例中那样分配它。

编辑:有多种舍入策略。检查 BigDecimal 类以供引用。我编辑了答案以使用 BigDecimal.ROUND_HALF_UP

关于java - BigDecimal 方法发送格式化数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34878298/

相关文章:

java - 如何使用 Java 的 BigDecimal 正确计算?

Java3d。如何增加视野范围?

java - 在 JTable 中编辑时锁定整行

python - 四舍五入到最接近的步长

使用 dc 对结果进行四舍五入(桌面计算器)

java - 在数据库中,一列的值为 "0.000000000000"。如何将 "0.000000000000"整体打印出来?

java - 用 Java 表示货币值(value)

java - Java中使用种子随机访问矩阵

java - 无法读取 Jelly Bean 上的套接字 InputStream

c# - 如果它有小数位,则将值增加 1?