gpt4 book ai didi

Java 浮点整数运算

转载 作者:行者123 更新时间:2023-12-03 04:51:37 25 4
gpt4 key购买 nike

鉴于下面的代码,输出的 boolean 值是

A: false
B: false
C: true

当我尝试将 V1 + V2 的总和减去小于 65 的值时,这不起作用,就好像减法从未发生过一样。如果我将原语切换为双倍,问题就得到解决。为什么会发生这种情况?

private static final float V1 = 1076712940;
private static final float V2 = 1070770707;

public static void main(final String[] args) {
final float y = V1 + V2;//2147483647

System.out.println("A: ((y - 64) - 1) == (y - 65) --> "
+ (((y - 64) - 1) == (y - 65))); /* A */
System.out.println("B: (y > y - 64) --> " + (y > y - 64)); /* B */
System.out.println("C: (y > y - 65) --> " + (y > y - 65)); /* C */
}

最佳答案

float 在内存中由符号位、尾数和指数表示,它们本质上是二进制分数。许多十进制数不能精确地表示为二进制分数。在指数或尾数中添加额外的位将允许更高的精度。

我相信,在您的情况下,您保存的浮点值与小于 64 的值之间的差异不足以产生不同的浮点表示形式。但是,由于 double 在尾数和指数中具有额外的位,因此它可以更精确,并且可以准确地表示减法。

关于Java 浮点整数运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35384461/

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