1/0和1.0/0除零错
搞IT的每个人都知道,0是不能作为除数的,这是操作系统在底层就存在一个除零中断,所以绝大多数高级编程语言(至少是我知道的C、C++、Java等)都是不允许除零的。
但是请看下面这两段代码
?
/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stub System.out.println(1.0/0);}?却没有异常抛出,而是输出Infinity。
为什么?
这是因为Java在处理表达式计算时,默认对整数型0转型成0.0,而浮点数在计算机内是无法绝对精确的表示的,因此这个0.0在计算机内部只是一个接近0的极小浮点值而已,所以很容易的可以想出为什么输出Infinity。
同样的取模运算%也存在这个问题。
这是前两天在温习Java基础知识,看《疯狂Java讲义》时看到的,留作备忘。
同时通过Python语言的实验,发现Python只要是除零都会报错ZeroDivisionError,不论是int 0还是float 0