在PlayN中,是否有一种用于格式化小数的跨平台方法?

时间:2012-05-15 04:45:28

标签: playn

如何格式化十进制值(例如1.29854)以便生成一个四舍五入到小数点后两位的字符串(1.30)?

我迷失了因为GWT doesn't support the native Java number formatting classes而且我找不到任何PlayN对数字格式的支持。

我已经确认,虽然以下版本适用于Java版本,但HTML版本无法编译:

    DecimalFormat df = new DecimalFormat("0.00");
    String formattedValue = df.format(1.29854);

1 个答案:

答案 0 :(得分:0)

这主要适用于我的情况(0到10之间的一位数字):

        String formatted = ((Double) (Math.round(doubleValue * 100.0) / 100.0)).toString();
        formatted = (formatted + "00").substring(0,4);

已在Java和HTML版本中验证。这是一个单元测试:

@Test
public void testNumberFormatting() {
    ArrayList<Double> testCases = Lists.newArrayList(
        0.0, 0.986, 1.0, 1.2, 1.29, 1.295);
    ArrayList<String> expectResults = Lists.newArrayList(
        "0.00", "0.99", "1.00", "1.20", "1.29", "1.30");

    for (int n=0; n<testCases.size(); n++) {
        Double testCase = testCases.get(n);
        String formatted = ((Double) (Math.round(testCase * 100.0) / 100.0)).toString();
        formatted = (formatted + "00").substring(0,4);
        assertEquals(expectResults.get(n), formatted);
        System.out.println(formatted);
    }
}