在 Java 中的 String.format(“%.2f”, doubleValue) 中防止舍入

2022-09-04 00:52:10

如何防止舍入(舍入半上算法)而不仅仅是截断它?String.format("%.2f", doubleValue);

例如:

doubleValue = 123.459

格式化后,

doubleValue = 123.46

我只想丢弃最后一个数字,

123.45

我知道还有其他方法可以做到这一点,我只是想知道使用String.format是否可能做到这一点。


答案 1

您始终可以设置舍入模式:

http://java.sun.com/javase/6/docs/api/java/math/RoundingMode.html

然后使用 String.Format() HALF_EVEN 默认使用,但您可以将其更改为 CEILING

另一个没有那么灵活的方法将是(但这不是你问的):

DecimalFormat df = new DecimalFormat("###.##");
df.format(123.459);

答案 2

看起来答案是一个大胖子NO.http://java.sun.com/javase/6/docs/api/java/util/Formatter.html#dndec“然后值将使用四舍五入的半上法算法进行舍入”

我觉得很奇怪他们会这样做,因为NumberFormatter允许你设置RoundingMode。但正如你所说,还有其他方法可以做到这一点。显然最简单的方法是先从您的值中减去.005。