gpt4 book ai didi

java - 浮点运算和浮点值的比较

转载 作者:行者123 更新时间:2023-11-30 11:23:13 25 4
gpt4 key购买 nike

对于这些代码行,我返回 0 作为输出,它们彼此相等。现在,如果我理解正确,a b 和 c 可能会存储略有不同版本的真值 .3,因此当对这些值执行 Float.compare(...) 时,我希望作为输出返回 0 以外的值。为什么我将它们设为 0?

float a = 0.15f + 0.15f;
float b = 0.1f + 0.2f;
float c = 0.3f;
System.out.println(Float.compare(a, b)); //<--- outputs 0
System.out.println(Float.compare(a, c)); //<--- outputs 0
System.out.println(Float.compare(b, c)); //<--- outputs 0

最佳答案

因为,正如您所说,它们可能存储的版本略有不同。但是使用这些简单的表达式,不会损失精度,因此 a、b 和 c 都包含完全相同版本的 .3f

为了好玩,试试这个。这里你会失去精度,比较的结果不会是0:

public static void main(String[] args) {
float a = .3f;
float b = .3f;
a = (float) Math.cos(a);
a = (float) Math.acos(a);
System.out.println(Float.compare(a, b));
}

关于java - 浮点运算和浮点值的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21346694/

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