Ограничение числа десятичных знаков в GWT? - PullRequest
6 голосов
/ 27 августа 2011

В чистой Java я обычно имел бы функцию, подобную приведенной ниже, для ограничения числа десятичных разрядов до decimalCount для данного числа value.Однако, согласно документации GWT, «GWT не обеспечивает полной эмуляции для классов форматирования даты и чисел (таких как java.text.DateFormat, java.text.DecimalFormat, java.text.NumberFormat и java.TimeFormat)».Что можно сделать со следующей функцией, чтобы она работала в GWT?

public static String getFormatted(double value, int decimalCount) { 
    DecimalFormat decimalFormat = new DecimalFormat();
    decimalFormat.setMaximumFractionDigits(decimalCount);
    return decimalFormat.format(value);
}

Ответы [ 4 ]

10 голосов
/ 27 августа 2011

Извлечение NumberFormat (com.google.gwt.i18n.client.NumberFormat) в JWadoc GWT.

Я никогда не использовал это, но я вижу этот пример там:

// Custom format
value = 12345.6789;
formatted = NumberFormat.getFormat("000000.000000").format(value);
// prints 012345.678900 in the default locale
GWT.log("Formatted string is" + formatted);

Так что это должно сработать для вас.

Обновление

Этот метод обеспечивает ту же функциональность, что и ваш вопрос. Я пошел дальше и спросил, как наиболее эффективно это сделать, см. Этот вопрос здесь . (Извините, этот ответ был так отредактирован - он просто меня беспокоил)

public static String getFormatted(double value, int decimalCount) {
    StringBuilder numberPattern = new StringBuilder(
            (decimalCount <= 0) ? "" : ".");
    for (int i = 0; i < decimalCount; i++) {
        numberPattern.append('0');
    }
    return NumberFormat.getFormat(numberPattern.toString()).format(value);
}

Альтернативы включают использование установленного количества «0» и использование подстроки для извлечения необходимого шаблона, как @Thomas Broyer упоминается в комментариях.

8 голосов
/ 29 октября 2012

Вы можете использовать

NumberFormat decimalFormat = NumberFormat.getFormat(".##");

из библиотеки GWT, которая будет отображать, например, от 1234.789789 до 1234.78

Полный рабочий пример можно найти здесь: http://gwt.google.com/samples/Showcase/Showcase.html#!CwNumberFormat

1 голос
/ 04 августа 2016

Вы также можете указать десятичный формат в файле UiBinder

<g:HTMLPanel ui:field="grid">
  <table>
    <tr>
      <td>
        <g:Label>
            <ui:msg description="total">Total:</ui:msg>
        </g:Label>
      </td>
      <td>
        <g:NumberLabel customFormat="0.00" ui:field="total"/>
      </td>
    </tr>
  </table>
</g:HTMLPanel>
1 голос
/ 24 апреля 2014

В текущем GWT (2.5, 2.6) теперь есть:

private final NumberFormat numberFormat = NumberFormat.getDecimalFormat();

System.out.println(numberFormat.format(myFloat));

Редактировать: добавленные версии GWT для запроса

...