6

decimalCount在纯 Java 中,我通常会有一个类似下面的函数来限制给定数字的小数位数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

4 回答 4

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

所以这应该适合你。

更新

此方法提供与您问题中的方法相同的功能。我继续询问最有效的方法来解决这个问题,请参阅此处的问题。(对不起,这个答案已经被编辑了这么多——这只是在打扰我)

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。

于 2011-08-27T19:39:18.367 回答
9

您可以使用

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

来自 GWT 库,它将呈现例如 1234.789789 到 1234.78

您可以在此处找到完整的工作示例:http: //gwt.google.com/samples/Showcase/Showcase.html#! CwNumberFormat

于 2012-10-29T15:08:32.510 回答
1

在当前的 GWT (2.5, 2.6) 中,现在有:

private final NumberFormat numberFormat = NumberFormat.getDecimalFormat();

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

编辑:每个请求添加 GWT 版本

于 2014-04-24T18:28:13.270 回答
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>

于 2016-08-04T12:01:17.683 回答