在Java中使用尾数解析浮点数

PNS*_*PNS 1 java floating-point double mantissa bigdecimal

使用标准Java Double类来解析带有尾数的浮点数似乎省略了指数的+符号.

例如:

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

有没有办法使用Double获得+符号,没有字符串后处理?

BigDecimal班没有一个更好的工作,例如,

new BigDecimal("1243544322E+24").toString() does return 1.243544322E+33
Run Code Online (Sandbox Code Playgroud)

但它通常比Double在密集处理中显示的要慢.

Jon*_*eet 6

您需要区分存储在a中的double及其字符串表示形式.

A double根本不存储文本表示.1.243544322E33 1.243544322E + 33.它们的价值相同.

现在,如果你想研究如何将值格式化double回a String,那是另一回事 - 但你正在进行的解析很好.你没有丢失任何信息.