在我的Java和C ++程序中,我都放了一个简单的try / catch块来捕获除零异常。该计划没有解决问题,而是说答案是无限的。为什么会这样?
Java(C ++几乎就是这样):
import java.util.Scanner;
import java.lang.ArithmeticException;
public class Expiriment {
static double a;
static double b;
public static void main (String [] args){
try {
Scanner input = new Scanner (System.in);
System.out.println("Enter first Number");
a = input.nextInt();
System.out.println("Enter 2nd number");
b = input.nextInt();
System.out.println("Answer is:"+ a/b);
}
catch (ArithmeticException e) {
double f = 0;
System.err.println (e+" "+"Cannot perform operation.");
System.out.println("Answer is:" + f);
}
}
}
答案 0 :(得分:2)
IEEE754浮点除法定义为非零a和0 b返回无穷大,如果除以0/0则返回NaN。因此,您在打印声明中得到了这样的结果。
除以零(对有限操作数的操作给出了精确的无限结果,例如
1/0
或log(0)
)(默认返回±infinity
)。
答案 1 :(得分:2)
不要将Java try / catch与C ++ try / catch进行比较。在C ++程序中除以零是不 C ++异常。
请看这里: