divided by 0 and 0.00 [closed]
Javascript
1 2 3 4 | 0/0 // NaN 0/0.0 // NaN 1/0.0 // Infinity 1/0.0 // Infinity |
Ruby
1 2 3 4 | >> 0/0 # ZeroDivisionError: divided by 0 >> 0/0.00 # NaN >> 1/0.00 # Infinity >> -1/0.00 # -Infinity |
Python
1 2 3 4 | >>> 0/0 # ZeroDivisionError: integer division or modulo by zero >>> 0/0.0 # ZeroDivisionError: integer division or modulo by zero >>> 1/0.0 # ZeroDivisionError: integer division or modulo by zero >>> -1/0.0 # ZeroDivisionError: integer division or modulo by zero |
这背后的原因是什么
整数不能被零整除,但浮点数可以吗?
在python中,为什么不是NaN或∞,而是所有的错误?
浮点数除0在许多环境中可能是一个异常(如果启用),但是由于IEEE float能够表示一些异常值(如
您还在观察不同语言中的不同解析(或提升)。然而,JavaScript中的裸
不同的语言有不同的选择。
Javascript的情况很简单:整数存储为浮点数,并选择遵循IEEE-754除法规则。
Python显然禁止使用
Ruby区分了精确的
Ruby实际上有两个不同的比较操作符来区分:
1 2 | 0 == 0.0 # => true 0.eql?(0.0) # => false |
这可能会产生一些重要的后果:
1 2 | h = {0 => :foo} h[0.0] # => nil |
And in python, why it's not a NaN or Infinity, but all errors?
python中的某些模块在适当的时候确实有这样的功能:
1 2 3 4 5 6 7 8 | In [1]: import numpy as np In [2]: a = np.arange(3) In [3]: b = np.ones(3) In [4]: b/a Out[4]: array([ inf, 1. , 0.5]) |