Len*_*via 15 java scientific-notation decimalformat
当执行以下代码时:
DecimalFormat eNotation1 = new DecimalFormat("#0.###E0");
System.out.println(eNotation1.format(123.456789));
Run Code Online (Sandbox Code Playgroud)
我的预期输出是;
1.235E2
代替,
1.2346E2
被印刷了。
为什么输出1.2346E2?
我知道我可以使用一种方法,例如setMaximumFractionDigits()是否只想设置小数点后的最大位数,但是我只是想了解为什么输出是1.2346E2
Tim*_*sen 15
如果您想要确切的格式,请使用模式0.000E0:
DecimalFormat eNotation1 = new DecimalFormat("0.000E0");
System.out.println(eNotation1.format(123.456789));
1.235E2
Run Code Online (Sandbox Code Playgroud)
至于为什么看到当前行为,#占位符是可选数字,这意味着DecimalFormat没有义务实际使用它们在模式中的使用方式。唯一的要求似乎是科学计数输出中出现的总位数匹配。在这种情况下,总位数为5,所以我们得到输出1.2346E2。
| 归档时间: |
|
| 查看次数: |
1450 次 |
| 最近记录: |