Printf宽度,意外格式结果

问题描述 投票:-3回答:2

我在这里有代码:

double n = 1234.56789;

System.out.printf("n=%8.2e", n);

打印出n=1.23e+03

我已经阅读了一些printf的格式化手册,我似乎无法理解为什么会这样。有人能让我失望吗?

java
2个回答
3
投票

你要求指数表示法(%e),你得到它。如果你想要常规的数字格式:%8.2f

在指数表示法的情况下,格式总是[ - ] A.BBBe [+ | - ] CC,如1.29e+02-3.98e-12。一般而言,这是A.BBB x 10CC的缩写,因此1.00e+01为10,1.29e+02为129,-3.98e-04为-0.000398。

您始终可以测试此表示法:

System.out.printf("n=%f", -3.98e-04);

3
投票

问:我期望像1.23e + 07这样的东西 - 我不明白+03来自哪里。

答:1234 = 1.234 * 1000

1000 = 10^3

因此1.23e+03

© www.soinside.com 2019 - 2024. All rights reserved.