我正在格式化一个十进制数字,并且我有以下标准来格式化它:
- 数字最多应保留两位小数(10.1234=>10.12)
- 如果小数点后只有一位数字,那么它将以额外的 0 结尾(10.5=>10.50)
- 千位分隔符将是逗号 ( 12345.2345 => 12,345.23 )
我写了以下逻辑:
double x = Double.parseDouble(value.toString());
String dec = x % 1 == 0 ? new java.text.DecimalFormat("###,###.##").format(x) : new java.text.DecimalFormat("###,###.00").format(x);
现在它正在打印:
11111111111110.567=>11,111,111,111,110.57
111111111111110.567=>111,111,111,111,110.56
1111111111111110.567=>1,111,111,111,111,110.60
11111111111111110.567=>11,111,111,111,111,110
111111111111111110.567=>111,111,111,111,111,104
1111111111111111110.567=>1,111,111,111,111,111,170
我不明白为什么行为会改变。我应该如何1111111111111111110.567
打印1,111,111,111,111,111,110.57
?