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

2023-11-22

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

看下面的例子。

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

的值float转换为 a 时不会改变double。显示的数字存在差异,因为需要更多的数字来区分double来自邻居的价值,即Java 文档要求。这是文档toString,这是从文档中引用的(通过多个链接)println.

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

相邻的两个double值 125.31999969482421875是 125.3199996948242045391452847979962825775146484375和125.3199996948242329608547152020037174224853515625.
观察到 125.32 比原始值 (125.31999969482421875) 更接近后一个邻居。因此,打印“125.32”并没有包含足够的数字来区分原始值。 Java 必须打印更多的数字,以确保从显示的数字转换回double再现的价值double传递给println.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么从 float 转换为 double 会改变值? 的相关文章