如何格式化十进制值(例如 1.29854),以便生成四舍五入到小数点后 2 位的字符串(1.30)?
我迷路了,因为GWT 不支持本机 Java 数字格式化类,而且我找不到任何 PlayN 对数字格式化的支持。
我已经确认,虽然以下在 Java 版本中有效,但 HTML 版本无法编译:
DecimalFormat df = new DecimalFormat("0.00");
String formattedValue = df.format(1.29854);
如何格式化十进制值(例如 1.29854),以便生成四舍五入到小数点后 2 位的字符串(1.30)?
我迷路了,因为GWT 不支持本机 Java 数字格式化类,而且我找不到任何 PlayN 对数字格式化的支持。
我已经确认,虽然以下在 Java 版本中有效,但 HTML 版本无法编译:
DecimalFormat df = new DecimalFormat("0.00");
String formattedValue = df.format(1.29854);
这主要适用于我的情况(对于 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);
}
}