使用标准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
慢,这显示在密集处理中。
答案 0 :(得分:6)
您需要区分double
中存储的值及其字符串表示。
double
根本不存储文字表示。 1.243544322E33 是 1.243544322E + 33。它们的价值相同。
现在,如果你想处理格式化 double
值的方式回到String
,这是另一回事 - 但解析你做得很好。你没有丢失任何信息。
答案 1 :(得分:2)
Jon如上所述是正确的,它在内存中正确表示。如果你希望它与尾数上的+一起显示,那么你正在谈论字符串格式化双。
Long winded official formatter reference
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%确定它会完成这项工作。格式说明符中的+强制它为任意数字放置一个+或 - 符号......我相信它会延伸到尾数。