2012-05-15 18 views
0

如何格式化十进制值(例如1.29854),使其产生四舍五入至小数点后两位(1.30)的字符串?在PlayN中,是否有跨平台的格式化小数?

我迷路了,因为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); 

回答

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); 
    } 
} 
相关问题