我在这里有代码:
double n = 1234.56789;
System.out.printf("n=%8.2e", n);
打印出n=1.23e+03
我已经阅读了一些printf的格式化手册,我似乎无法理解为什么会这样。有人能让我失望吗?
你要求指数表示法(%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);
问:我期望像1.23e + 07这样的东西 - 我不明白+03来自哪里。
答:1234 = 1.234 * 1000
。
1000 = 10^3
因此1.23e+03