gpt4 book ai didi

Java 转换为 Double

转载 作者:行者123 更新时间:2023-12-01 16:45:50 25 4
gpt4 key购买 nike

   class Rextester
{
public static void main(String args[])
{
double b = 1.13f * 100;
System.out.println(b);
}
}

在上述代码中,当 f 未附加到 1.13 时,输出为 112.99999999999999,但当 f 附加到 1.13 时,输出值为 113。为什么会出现这种情况?

最佳答案

f 后缀告诉 Java 该数字是单精度 float ,而不是 double float 。

float 的一般问题是某些数字无法精确表示。内部表示的尾数的每一位代表分母中2的幂的分数,即1/2、1/4、1/8、1/16等。然后计算机将选择最接近的数字来表示你想要的号码。

在您的情况下发生的情况是,当您省略 f 时,它会使用完整的 double 位,并获取最接近的数字(112.9999999999)。当您执行 f 时,您是在告诉程序将其四舍五入到最接近的单精度 float ,因此不适合的前 9 个将被四舍五入并传播到值 113。

这个具体数字有点巧合。不要假设使用单精度浮点总是会给出预期结果。浮点运算在计算中总是有点困惑。

关于Java 转换为 Double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51259866/

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