2012-05-15 44 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); 
    } 
} 
相關問題