我需要以下结果
100.12 -> 100.00
100.44 -> 100.00
100.50 -> 101.00
100.75 -> 101.00
.round()
或 .setScale()
?我该怎么做?
原文由 n a 发布,翻译遵循 CC BY-SA 4.0 许可协议
我需要以下结果
100.12 -> 100.00
100.44 -> 100.00
100.50 -> 101.00
100.75 -> 101.00
.round()
或 .setScale()
?我该怎么做?
原文由 n a 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果我按照 Grodriguez 的回答去做
System.out.println("" + value);
value = value.setScale(0, BigDecimal.ROUND_HALF_UP);
System.out.println("" + value);
这是输出
100.23 -> 100
100.77 -> 101
这不是我想要的,所以我最终这样做了..
System.out.println("" + value);
value = value.setScale(0, BigDecimal.ROUND_HALF_UP);
value = value.setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println("" + value);
这就是我得到的
100.23 -> 100.00
100.77 -> 101.00
这暂时解决了我的问题.. :) 谢谢大家。
原文由 n a 发布,翻译遵循 CC BY-SA 2.5 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
您可以使用
setScale()
将小数位数减少为零。假设value
持有要四舍五入的值:使用
round()
有点复杂,因为它需要您指定要保留的位数。在您的示例中,这将是 3,但这并非对所有值都有效:(请注意,
BigDecimal
对象是不可变的;setScale
和round
都将返回一个新对象。)