我有一个项目,我需要在打印前格式化数字。我这样做:
public String formatNumber(String format, long number, RoundingMode roundingMode) {
DecimalFormat df = new DecimalFormat(format);
df.setRoundingMode(roundingMode);
return df.format(number);
}
但我的应用程序需要使用GWT,我不能再使用DecimalFormat了,因为它不受支持。我需要使用包NumberFormat
中的com.google.gwt.i18n.client.NumberFormat;
。
我格式化我的数字:
public String formatNumber(String format, long number, RoundingMode roundingMode) {
NumberFormat df = NumberFormat.getFormat(format);
return df.format(number);
}
如您所见,NumberFormat上不存在df.setRoundingMode。我的号码自动四舍五入到最接近的小数。但是,我并不总是希望有这种行为。我怎么能按照自己的意愿对这个数字进行舍入?
由于
答案 0 :(得分:0)
GWT NumberFormat
不支持舍入模式。但是,您正在格式化long
,所以看起来您还不需要四舍五入。如果你真的需要它,那么你有一些float
,double
,BigDecimal
等。我建议您使用BigDecimal
并在调用格式化程序之前更改比例。< / p>
NumberFormat.getDecimalFormat().format(new BigDecimal(1.123).setScale(2, RoundingMode.HALF_EVEN));
或者只是......
String str = new BigDecimal(1.123).setScale(2, RoundingMode.HALF_EVEN).toPlainString();
答案 1 :(得分:0)
您可能需要查看Math.rint()
和Math.round()
See difference
然后您将返回Math.rint(df.format(number))