[英]Why does +e canceled and -e not?
System.out.println(2e+5);
以上線的輸出是,
200000.0
雖然低於線路,
System.out.println(2e-5);
輸出是,
2.0e-5
為什么2e-5
沒有用-10^5
來解決輸出,
0.00002
因為Double類的設計者選擇如何實現它 :
[...]
- 如果m大於或等於10 -3但小於10 7 ,那么它表示為m的整數部分,以十進制形式表示,沒有前導零,后跟'。' ('\\ u002E'),后跟一個或多個十進制數字,表示m的小數部分。
- 如果m小於10 -3或大於或等於10 7 ,則它以所謂的“計算機化科學記數法”表示。 [...]
當然,他們本可以做出另一種選擇,但事實就是如此。
正如文檔所述,如果您需要特定格式,請使用NumberFormat
格式化double。
正如@Nizet已經指出的那樣,當將double轉換為字符串時,如果位數很大,則輸出將具有科學記數法。 這不僅僅是小數。
考慮:
double d = 1500000000;
System.out.println(String.valueOf(d));
這將打印1.5E9
如果要以可讀格式進行轉換,請使用String.format
System.out.println(String.format ("%.0f", d));
將打印1500000000
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.