繁体   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