4
为什么exponent(0.0)
给出域错误?似乎0.0
的指数应该与1.0
的指数0相同。由于零是一个Int,所以我很困惑为什么会出现在域之外(或者它是一个错误?但是由于设置了错误在这里,它似乎是一个有意识的选择)。为什么指数(0.0)是DomainError?
为什么exponent(0.0)
给出域错误?似乎0.0
的指数应该与1.0
的指数0相同。由于零是一个Int,所以我很困惑为什么会出现在域之外(或者它是一个错误?但是由于设置了错误在这里,它似乎是一个有意识的选择)。为什么指数(0.0)是DomainError?
让我们的价值观玩玩看:
julia> exponent(2.0)
1 --- 2^1 = 2
julia> exponent(4.0)
2 --- 2^2 = 4
julia> exponent(1.0)
0 --- 2^0 = 1
julia> exponent(0.5)
-1 --- 2^-1 = 0.5
julia> exponent(0.25)
-2 --- 2^-2 = 0.25
.
.
.
因此,这意味着:
julia> exponent(0.0)
-∞ --- 2^-∞ = 0.0
负无穷大是导致域错误。
噢,呃......我的大脑不工作了一下。很好的解释。 –
但是由于'2.0 ^( - 1024)== 0.0'没有错误,通过无声溢出的同样精神,有'expoenent(0.0)== -1024'没有错误是合理的。特别是考虑到这是忠实于Float64中的实际指数比特表示(按照IEEE754标准)。只是说这是可信的。当前的行为更接近数学的真相。 –
但是使用'exponent(0.0)== -1024'与'exponent(nextfloat(0.0))== -1074'这个事实不一致。 – DNF