在纯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);
}
答案 0 :(得分:10)
在GWT Javadoc中查看NumberFormat(com.google.gwt.i18n.client.NumberFormat)。
我从未使用它,但我在那里看到了这个例子:
// 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);
所以这对你有用。
此方法提供与问题相同的功能。我继续前进,要求找到最有效的方法,看看问题here。 (对不起,这个答案已经编辑了很多 - 这只是让我烦恼)
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。
答案 1 :(得分:8)
您可以使用
NumberFormat decimalFormat = NumberFormat.getFormat(".##");
来自GWT库的将呈现例如1234.789789到1234.78
您可以在此处找到完整的工作示例:http://gwt.google.com/samples/Showcase/Showcase.html#!CwNumberFormat
答案 2 :(得分:1)
在目前的GWT(2.5,2.6)中,现在有:
private final NumberFormat numberFormat = NumberFormat.getDecimalFormat();
System.out.println(numberFormat.format(myFloat));
编辑:为每个请求添加GWT版本
答案 3 :(得分:1)
您还可以在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>