换句话说,就是平等:

Double.parseDouble(Double.toString(x)) == x

由Java提供担保?

(编辑为使用parseDouble以避免不必要的装箱.)

推荐答案

是的,是这样的.如果你看一下documentation of toString,在描述了特殊值的边缘情况后,有这样的文字

Selection of a decimal: Select 定义明确的十进制dSUB>m来表示m [absolute value of the 100 argument].根据IEEE 754浮点算术的四舍五入策略,该小数(几乎总是)舍入为m的最短小数.

Formatting as a string:小数dm根据其值被设置为字符串的格式,可以是普通的,也可以是计算机化的科学记数法.

换句话说,转换不会以十进制形式给出二进制浮点数的exact表示形式.但是,它将为结果提供足够的位数,以便将结果舍入到输入(使用IEEE 754标准的舍入到最接近的舍入).toString实现还将try Select 满足此条件的最短可能形式.

另请参见documentation of valueOf方法(它是parseDouble的同义词).在这里,您可以确认各种特殊情况之间的对应关系,并使用四舍五入法进行反向转换.

EDIT:超过reading.

EDIT2:正如@teapot418注意到的那样,从技术上讲,NaN的情况打破了平等.然而,这是因为标准对NaN个比较的定义.如果你的xNaN,Double.parseDouble(Double.toString(x))仍然是NaN.

Java相关问答推荐

当切换javaFX场景时,stage的大小正在Minimize

转换为Biggram

在Java中将Charsequence数组更改为String数组或List String<>

为什么BasicComboBoxRenderer在文本不存在或文本为空的情况下设置两次文本?

ApachePOI:不带换行的新行

对运行在GraalVM-21上的JavaFX应用程序使用分代ZGC会警告不支持JVMCI,为什么?

在Java Swing Paint应用程序中捕获快速鼠标移动时遇到困难

GSON期间的Java类型擦除

Docker不支持弹性APM服务器

在VS代码中,如何启用Java Main函数的&Q;Run|DEBUG&Q;代码?

try 使用Spring集成和MySQL实现发件箱模式时,锁定等待超时

如何在Spring Boot中创建可以将值传递给配置的&Enable&Quot;注释?

如何使用MapStrCut转换双向链接

使用SWIG将C++自定义单元类型转换为基本Java类型

在实例化中指定泛型类型与不指定泛型类型之间的区别

Java集合:NPE,即使没有添加空值

从字节数组切换到JakartaMail org.springframework.mail.javamail.JavaMailSender InputStreamResource

";home/runner/work/中没有文件...匹配到[**/pom.xml];Maven项目的构建过程中出现错误

如何设置默认序列生成器分配大小

java构造函数中的冻结操作何时发生?