Ограничение количества знаков после запятой в GWT?

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

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

4 ответов


проверить NumberFormat (com.гуглить.ГВт.как i18n.клиента.NumberFormat) в GWT Javadoc.

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

// 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, упомянутый в комментариях.


можно использовать

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

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

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


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

private final NumberFormat numberFormat = NumberFormat.getDecimalFormat();

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

Edit: добавлены версии GWT на запрос


вы также можете указать десятичный формат в файле 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>