GWT - 来自com.google.gwt.i18n.client.NumberFormat的NumberFormat的舍入模式

时间:2018-06-12 19:48:56

标签: java gwt number-formatting

我有一个项目,我需要在打印前格式化数字。我这样做:

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。我的号码自动四舍五入到最接近的小数。但是,我并不总是希望有这种行为。我怎么能按照自己的意愿对这个数字进行舍入?

由于

2 个答案:

答案 0 :(得分:0)

GWT NumberFormat不支持舍入模式。但是,您正在格式化long,所以看起来您还不需要四舍五入。如果你真的需要它,那么你有一些floatdoubleBigDecimal等。我建议您使用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))