GWT - Режим округления с NumberFormat от com.google.gwt.i18n.client.NumberFormat - PullRequest
0 голосов
/ 12 июня 2018

У меня есть проект, в котором мне нужно отформатировать числа перед их печатью.Я делаю так:

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);
 }

Как видите, df.setRoundingMode не существует в NumberFormat,Мой номер автоматически округляется до ближайшего десятичного числа.Однако я не всегда хочу иметь такое поведение.Как я могу округлить числа, как я хочу с этим классом?

Спасибо

Ответы [ 2 ]

0 голосов
/ 14 июня 2018

Возможно, вы захотите взглянуть на Math.rint() и Math.round() См. Разницу

Затем вы вернетесь Math.rint(df.format(number))

0 голосов
/ 13 июня 2018

GWT NumberFormat не поддерживает режимы округления.НО, вы форматируете long, так что похоже, что вам все равно не нужно округлять.Если вам это действительно нужно, значит у вас есть float, double, BigDecimal и т. Д. Я рекомендую вам использовать BigDecimal и изменить шкалу перед вызовом форматера.

NumberFormat.getDecimalFormat().format(new BigDecimal(1.123).setScale(2, RoundingMode.HALF_EVEN));

Или просто ...

String str = new BigDecimal(1.123).setScale(2, RoundingMode.HALF_EVEN).toPlainString();
...