当前位置: 首页 > 知识库问答 >
问题:

为Java类创建相等方法以比较double或int值[重复]

海新霁
2023-03-14

我的家庭作业是创建一个类的相等方法,在Java中覆盖对象类的相等方法。我已经像下面这样编码了,但是讲师评论说:“双打不能与 ==,! = 相提并论,因为存储并不精确。”那么在这种情况下,我如何相应地编辑代码呢?非常感谢。类游戏设置{

private int firingInterval;
private double moveSpeed;
...
public boolean equals(Object obj) {

        //objects are equal if same firingInterval and moveSpeed
        GameSettings other;
        boolean result = false;

        //TODO

         other = (GameSettings) obj;
        if (obj instanceof GameSettings) {
            return (firingInterval == other.getFiringInterval()
                && moveSpeed == other.getMoveSpeed());
        } else {
            return result;
        }
    }

共有1个答案

柯甫
2023-03-14

正如您的讲师所说,比较double并不仅仅使用equals运算符。例如,可以尝试1不等于1.000。

相反,我们经常通过在两个值之间使用delta来比较double。如果delta相对较小,则这些值将相等。

public static final double EPSILON = 0.0000000001;
public boolean compare(double a, double b) {
   return Math.abs(a-b) < EPSILON;
}
 类似资料:
  • 我想从有更多经验的人那里得到一些建议,他们在Java中使用原始的双相等。由于可能的舍入错误,对两个双和使用是不够的。 我的问题是: > 使用相对误差计算某个增量值,是否有一个通用(而不是特定于应用程序)的增量值值得推荐?请参阅下面的示例。 下面是一个通用函数,用于检查考虑相对错误的相等性。您建议的值是多少,以捕获简单操作 ,-,/,* 操作中的大部分舍入错误?

  • 本文向大家介绍Java比较两个List的值是否相等的方法,包括了Java比较两个List的值是否相等的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java比较两个List的值是否相等的方法。分享给大家供大家参考。具体如下: 假设两个队列 {1,2,3,4} 和 {4,3,2,1} ,这个方法用来比较这两个队列中包含的值是否相等 希望本文所述对大家的java程序设计有所帮助。

  • 这是一个Java代码,应该测试小数点后的前三位是否相同。而我需要编写这个程序没有一个主方法。

  • JavaScript 有两种方式判断两个值是否相等。 等于操作符 等于操作符由两个等号组成:== JavaScript 是弱类型语言,这就意味着,等于操作符会为了比较两个值而进行强制类型转换。 "" == "0" // false 0 == "" // true 0 == "0"

  • 问题内容: 首先采取klurudge解决方案,使用哨兵方法(必须让您的程序不允许输入哨兵值): 假设您忘记了阻止程序中的哨兵值,用户在B字段中输入了-2147483648,而A为空。上面的代码报告为true,应报告为false,不应报告为true或null。 比较可为空字段上的相等性的最简洁方法是什么?A == B仅应报告true或false,而不管该字段是否可为空。 问题答案: 也许IS [NO

  • 我正在做一些任务工作,我遇到了一个问题。 我收到了这个示例代码: 然而,当我尝试这样做时,会发生以下情况: 有什么想法吗?