![](/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.