Java中相等双精度值的比较

时间:2019-01-11 01:59:25

标签: java double

我正在比较从用户输入中收到的两个double值。
这是代码:

import java.util.Scanner;

class Main {
public static void main(String[] args) {
  Scanner scan = new Scanner(System.in);
  System.out.println("Please enter two numbers: ");
  Double a = scan.nextDouble();
  Double b = scan.nextDouble();
  if (a>b){
   System.out.println("Largest is: " + a);}
  if(b>a){
   System.out.println("Largest is: " + b);}
   System.out.println(a+""+b);
  if (a==b){
    System.out.println("Largest is: " + b);}
  }
}

当我输入彼此之间大于/小于的双精度值时,此代码有效。但是,当我输入两个完全相同的双精度值(例如:9.09.0)时,此代码不起作用
为什么呢?
预先感谢

1 个答案:

答案 0 :(得分:-2)

就像@GBlodgett和@ScaryWombat在评论中说的,Double是一个对象,因此在我的代码中,我基本上比较了两个对象是否相同。
因此,我可以比较两个double值:
a.equals(b)或使用.compare()函数,例如:Double.compare(a,b)==0
但是,如果我只使用double而不是Double

,则根本不需要这样做。