java - 在 Java 中解析带尾数的 float

标签 java floating-point double bigdecimal mantissa

使用标准的 Java Double 类解析带尾数的 float 似乎省略了指数中的 + 号。

例如:

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 根本不存储文本表示。 1.243544322E33 1.243544322E+33。它们具有相同的值。

现在,如果您想研究如何将一个 double格式化回一个 String,那是另一回事了——但是 < em>parsing 你正在做的很好。您不会丢失任何信息。

关于java - 在 Java 中解析带尾数的 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11165025/

相关文章:

java - 为具有通用类型的多个 WSDL 优化 WSImport

Java thread.sleep(1) sleep 时间超过 1 毫秒

c++ - 从 float C++ 中提取数字

performance - 是否有任何现实世界的 CPU 不使用 IEEE 754?

Spring Security 4升级后java.lang.NoSuchMethodError org.springframework.web.servlet.tags.form.InputTag.setDisabled

Java switch 语句有两种情况还是 if 语句?

c - 递增 float 的有效位数

assembly - 在MIPS中将整数转换为 double

java - 重新定义扫描仪的非数字识别?

c++ - 双变量输出 32767 始终代替用户输入