gpt4 book ai didi

java - 为什么从 float 转换为 double 会改变值?

转载 作者:太空狗 更新时间:2023-10-29 22:49:51 28 4
gpt4 key购买 nike

我一直在试图找出原因,但我找不到。谁能帮帮我?

看下面的例子。

float f = 125.32f;
System.out.println("value of f = " + f);
double d = (double) 125.32f;
System.out.println("value of d = " + d);

这是输出:

value of f = 125.32
value of d = 125.31999969482422

最佳答案

当转换为 double 时,float 的值不会改变。显示的数字有所不同,因为需要更多数字才能将 double 值与其相邻值(required by the Java documentation)区分开来.那是 toString 的文档,它是从 println 的文档中引用的(通过几个链接)。

125.32f 的准确值为 125.31999969482421875。两个相邻的 float 值为 125.3199920654296875 和 125.32000732421875。观察到 125.32 比任何一个邻居更接近 125.31999969482421875。因此,通过显示“125.32”,Java 已经显示了足够的数字,因此从十进制数字转换回 float 可以重现传递给 println< 的 float 的值.

The two neighboring double values of 125.31999969482421875 are 125.3199996948242045391452847979962825775146484375 and 125.3199996948242329608547152020037174224853515625.
观察到 125.32 比原始值 (125.31999969482421875) 更接近后一个邻居。因此,打印“125.32”不包含足够的数字来区分原始值。 Java 必须打印更多数字,以确保从显示的数字返回到 double 的转换重现传递给 printlndouble 的值。

关于java - 为什么从 float 转换为 double 会改变值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17504833/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com