限制 GWT 中的小数位数?

发布于 2024-12-02 02:38:42 字数 499 浏览 0 评论 0原文

在纯 Java 中,我通常会使用如下所示的函数,用于将给定数字 value 的小数位数限制为 decimalCount。但是,根据 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);
}

In pure Java, I would normally have a function like the one below for limiting the number of decimal places to decimalCount for a given number value. However, according to the GWT docs, "GWT does not provide full emulation for the date and number formatting classes (such as java.text.DateFormat, java.text.DecimalFormat, java.text.NumberFormat, and java.TimeFormat)." What would one do to the following function in order to make it work in GWT?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

深府石板幽径 2024-12-09 02:38:42

请查看 NumberFormat (com. GWT Javadoc 中的 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 在评论中提到的那样。

Check out NumberFormat (com.google.gwt.i18n.client.NumberFormat) in the GWT Javadoc.

I've never used it but I see this example in there:

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

So this should work for you.

Update

This method provides the same functionality as the one in your question. I went ahead and asked for the most efficient way to go about this, see that question here. (Sorry this answer has been edited so much - it was just bugging me)

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

Alternatives include using a set amount of "0"'s and using substring to pull out the required pattern as @Thomas Broyer mentioned in the comments.

月竹挽风 2024-12-09 02:38:42

您可以使用

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

GWT 库,该库将呈现例如 1234.789789 到 1234.78

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

You can use

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

from GWT library which will render for example 1234.789789 to 1234.78

You can find a full working example here: http://gwt.google.com/samples/Showcase/Showcase.html#!CwNumberFormat

牛↙奶布丁 2024-12-09 02:38:42

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

private final NumberFormat numberFormat = NumberFormat.getDecimalFormat();

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

编辑:根据请求添加了 GWT 版本

In current GWT (2.5, 2.6), there is now:

private final NumberFormat numberFormat = NumberFormat.getDecimalFormat();

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

Edit: added GWT versions per request

檐上三寸雪 2024-12-09 02:38:42

您还可以在 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>

You can also specify the decimal format within the UiBinder file

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文