System.out.println(2e+5);
上一行的输出是
200000.0
在行的下方,
System.out.println(2e-5);
输出是
2.0e-5
为什么2e-5
不能通过-10^5
给出输出来解决,
0.00002
答案 0 :(得分:8)
因为这是Double类chose to implement it的设计师的方式:
[...]
- 如果m大于或等于10 -3 但小于10 7 ,则将其表示为m的整数部分,以十进制形式表示,无前导零,后跟“。” ('\ u002E'),后接一个或多个十进制数字,代表m的小数部分。
- 如果m小于10 -3 或大于或等于10 7 ,则以所谓的“计算机科学计数法”表示。 [...]
他们当然可以做出另一种选择,但这就是事实。
如文档所述,如果您想要特定的格式,请使用NumberFormat
来设置双精度格式。
答案 1 :(得分:0)
正如@Nizet所指出的,当将double转换为字符串时,如果位数很大,输出将具有科学计数法。这不仅仅是小数点。
考虑:
double d = 1500000000;
System.out.println(String.valueOf(d));
这将打印1.5E9
如果您希望以可读格式进行转换,请使用String.format
System.out.println(String.format ("%.0f", d));
将打印1500000000