![](/img/trans.png)
[英]How can floating point values be printed without mantissa/exponent format?
[英]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.