相关疑难解决方法(0)

".equals"和"=="之间有什么区别?

我今天换了讲师,他说我用了一个奇怪的代码.(他说最好使用.equals,当我问为什么时,他回答"因为它是!")

所以这是一个例子:

if (o1.equals(o2))
{
 System.out.println("Both integer objects are the same");
}
Run Code Online (Sandbox Code Playgroud)

而不是我习惯的:

if (o1 == o2)
{
  System.out.println("Both integer objects are the same");
}
Run Code Online (Sandbox Code Playgroud)

这两者之间有什么区别.为什么他的方式(使用.equals)更好?

通过快速搜索找到了这个,但我无法理解这个答案:

java equals

65
推荐指数
3
解决办法
10万
查看次数

比较双倍与零

我是Java的新手,我一直在尝试实现一种算法,用于查找立方体方程的根.当我计算判别式并尝试检查其相对于零的位置时,就会出现问题.

如果运行它并输入数字"1 -5 8 -4",输出如下:

1 -5 8 -4
p=-0.333333, q=0.074074
disc1=0.001372, disc2=-0.001372
discriminant=0.00000000000000001236
Discriminant is greater than zero.
Run Code Online (Sandbox Code Playgroud)

我知道问题出现了,因为双打的计算并不准确.通常判别式应为0,但最终为0.00000000000000001236.

我的问题是,避免这种情况的最佳方法是什么?我应该检查数字是否介于epsilon邻域为零之间?还是有更好更精确的方法?

提前感谢您的回答.

import java.util.Scanner;

class Cubical {
    public static void main(String[] args) {
        // Declare the variables.
        double a, b, c, d, p, q, gamma, discriminant;

        Scanner userInput = new Scanner(System.in);
        a = userInput.nextDouble();
        b = userInput.nextDouble();
        c = userInput.nextDouble();     
        d = userInput.nextDouble();

        // Calculate p and q.
        p = (3*a*c - b*b) / (3*a*a);
        q = (2*b*b*b) / (27*a*a*a) …
Run Code Online (Sandbox Code Playgroud)

java double

18
推荐指数
2
解决办法
3万
查看次数

标签 统计

java ×2

double ×1

equals ×1