检查Java中的double是否是无限的

时间:2011-11-29 13:34:25

标签: java

我正在为这个家庭作业制作一个简单的计算器,Java正在回归" Infinity"除以0。

当我无限时,我需要显示一些错误信息。问题是我不知道该怎么做

double result;
result = 4/0;
//if result == infinity then some message - need help with this

7 个答案:

答案 0 :(得分:51)

您可以使用Double.isInfinite(double)

这是double doc

答案 1 :(得分:5)

以上代码生成

ArithmeticException: / by zero

您可以在try / catch块中捕获此异常。

答案 2 :(得分:1)

请查看它是否等于Double.POSITIVE_INFINITY

double result;
result = 4.0 / 0.0;

答案 3 :(得分:1)

Double课程中有两个无限远字段:POSITIVE_INFINITYNEGATIVE_INFINITY,您可以查看。

请注意,整数除以零会抛出ArithmeticException,因此您的行必须是4.0/04/0.04.0/0.0,因为4和0是整数,因此结果在整数数学中。

答案 4 :(得分:0)

JacekKwiecień尝试此代码

double result;
try{
    result=4.0/0.0;
}catch(ArithmeticException e){

    System.out.println("Math error "+ e.getMessage())
}

`

答案 5 :(得分:0)

恢复一个超级老问题,因为它出现在我的Java类中。所以我确定你像他们所建议的那样尝试了try / catch,但你发现,和我一样,它并没有与Double一起使用。带有ArithmeticException的try / catch不会对DoubleFloat起作用,因为它们会返回" Infinity"而不是返回异常。 (注意,删除了myold"回答"因为它不是答案)。

在此基础上拼凑了几个不同的问题/答案,我提出了以下试验。

public class trial
{
  public static void main(String[] args)
  {
      double a;
     try {
          a = 4/0;
         System.out.println(" The answer is " +a);
      } catch(ArithmeticException e) {
     System.out.println(" You can't divide by zero. Please try again.");
      }
  }
}

上面的代码应该给你结果"答案是Infinity。"至少它对我有用,因为它是double

使用int,它不需要下面的if语句,因为它会抛出异常。但由于它是Double,下面的if语句会导致它抛出一个catch将......好......捕获的异常。

public class trial
{
public static void main(String[] args)
  {
      double a;
          try {
        a = 4/0;
   // if statement to throw an AtithmeticException if ans equals infinity
      if(a == Double.POSITIVE_INFINITY){
          throw new ArithmeticException();

        }
        else{

          System.out.println(" The answer is " +a);
        }

  } catch(ArithmeticException e) {
     System.out.println(" You can't divide by zero. Please try again.");
    }
  }
}

答案 6 :(得分:-1)

这种错误称为异常。您可以使用try-catch块来捕获此异常。

 try{
      result = 4/0;
 }
 catch(ArithmeticException e){
     System.out.println("You divided by zero");
 }

您可以阅读有关异常处理here的信息。