限制GWT中的小数位数?

时间:2011-08-27 11:56:02

标签: java math gwt numerical-methods

在纯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 个答案:

答案 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>