【问题标题】:Comparison of Equal Double Values in Java [duplicate]Java中相等双值的比较[重复]
【发布时间】:2019-01-11 01:59:25
【问题描述】:

我正在比较从用户输入收到的 2 个双精度值。
这是代码:

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
这是为什么呢?
提前致谢

【问题讨论】:

  • Double 是一个对象。使用.equals()
  • 您在问a Object 是否与b Object 相同
  • 不要乱搞.equals()。只需在需要double 时使用double,在需要Double 时使用Double。在这种情况下,您需要double

标签: java double


【解决方案1】:

就像@GBlodgett 和@ScaryWombat 在 cmets 中所说,Double 是一个对象,所以在我的代码中,我基本上比较对象是否相同。
因此,要比较两个双精度值,我可以这样做:
a.equals(b) 或使用 .compare() 函数,如下所示:Double.compare(a,b)==0
但是,如果我只使用double 而不是Double,我根本不需要这样做

【讨论】:

    猜你喜欢
    • 2021-04-15
    • 2014-09-29
    • 2015-01-05
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多