簡體   English   中英

在Java中使用尾數解析浮點數

[英]Parsing a floating point number with mantissa in Java

使用標准的Java Double類解析尾數浮點數似乎忽略了指數中的+號。

例如:

Double.parseDouble("1258124354E-28") returns 1.258124354E-19, but
Double.parseDouble("1243544322E+24") returns 1.243544322E33 (not E+33)

有沒有辦法使用Double獲得+符號,而無需進行字符串后處理?

BigDecimal類做得更好,例如

new BigDecimal("1243544322E+24").toString() does return 1.243544322E+33

但通常比Double慢,而Double在密集處理中顯示。

您需要區分存儲在double及其字符串表示形式。

double根本不存儲文本表示形式。 1.243544322E33 1.243544322E + 33。 它們具有相同的價值。

現在,如果您想研究如何將double格式化String ,那是另一回事了-但是您正在執行的解析就可以了。 您不會丟失任何信息。

Jon如上所述是正確的,它在內存中正確地表示了它。 如果您希望它在尾數上顯示為+,那么您在說的是字符串格式的雙精度格式。

冗長的官方格式化程序參考

import java.util.Formatter;

double myDouble = Double.parseDouble("1243544322E+24");

Formatter formatter = new Formatter();
formatter.format("%+E", myDouble); //This should return with what you want, though with an extra + infront of the number

我尚未運行此代碼,因此我不是100%確信它將完成這項工作。 格式說明符中的+強制它為任何數字放置+或-符號...我認為這會擴展到尾數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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