gpt4 book ai didi

java - 测试先前声明的变量总和是否不等于 3.14 的 boolean 表达式

转载 作者:搜寻专家 更新时间:2023-11-01 02:48:58 24 4
gpt4 key购买 nike

我正在通过以前的试卷努力积累我的 Java 经验。这个特定问题有两个答案。第一个是我自己的,看起来很简单,第二个是我的讲师的,在我 Java 开发的这个特定阶段,这似乎让我感到困惑。

这是我的代码:

public class InClassTestTwoQ2
{
public static void main(String[] args){
double sum = 3.14;

System.out.println(test(sum));
System.out.println(testTwo(sum));
}

public static boolean test(double sum){
return sum != 3.14; //My boolean test return type
}
public static boolean testTwo(double sum){
return Math.abs(sum - 3.14) > 1e-14; //Lecturer boolean test return type
}
}

在这里使用 Math.abs 是更好的选择吗?另外,我不确定 1e-14 在做什么?有人可以解释为什么我的讲师以这种方式返回他的 boolean 语句的任何可能性吗?我的似乎很直接,因为我永远不会按照他的方式去做?

此外,请原谅我的代码中的任何错误。我还在学习Java。非常感谢。

最佳答案

为了让您大致了解为什么讲师的答案更好,而您的答案却不像您想象的那么简单,请考虑以下因素:

3.1444440 和 3.1444441

它们相等吗?那么在 Java 中,如果您简单地通过 == 比较它们,那么您将得到 false。这就是为什么你不应该将 double /浮点类型与 == 进行比较。比较 float 类型的最佳方法是使用 tolerance value。您想要测试减去两个 float 类型的结果是否在该公差值之内。例如,您的老师使用的公差值是 1e-14。因此,如果 sum-3.14 在容差值内,则认为这两个数字相等。

另请注意,Math.abs 为您提供减法的绝对 值,因此您永远不会得到负数,否则您不会得到正确的结果。

希望这能给您一个概览。

关于java - 测试先前声明的变量总和是否不等于 3.14 的 boolean 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15460764/

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