簡體   English   中英

為什么+ e取消了-e不?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM