Ограничение количества знаков после запятой в 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>