julia inf由inf不同的结果

Van*_*eer 1 julia

我对Julia很新 - 在Windows上的1.0.0版本.该文件指出以下

julia> Inf / Inf
NaN
Run Code Online (Sandbox Code Playgroud)

但是当我执行以下操作时,我会得到不同的结果

julia> 1/0
Inf

julia> 1/0 / 1/0  # this should be NaN right, tried (1/0)/(1/0) as well
Inf

julia> 1/0
Inf

julia> ans/ans
NaN
Run Code Online (Sandbox Code Playgroud)

为什么1/0 / 1/0NaN,而是ans/ans

Bog*_*ski 5

你实际上有:

julia> (1/0)/(1/0)
NaN
Run Code Online (Sandbox Code Playgroud)

所以这是一致的.

现在关于:

julia> 1/0 / 1/0
Inf
Run Code Online (Sandbox Code Playgroud)

请观察它的评估方式:

julia> :(1/0 / 1/0)
:(((1 / 0) / 1) / 0)
Run Code Online (Sandbox Code Playgroud)

所以我们得到一个标准的从左到右的评估(应该是预期的).你得到:

julia> 1/0
Inf

julia> (1/0)/1
Inf

julia> ((1/0)/1)/0
Inf
Run Code Online (Sandbox Code Playgroud)

一切都好.

实际上在这里你有一个特别需要注意的事情(这与你的问题没有直接关系,但很高兴知道它可能会成为下一个问题):

julia> Inf / 0
Inf

julia> Inf / (-0)
Inf

julia> Inf / (0.0)
Inf

julia> Inf / (-0.0)
-Inf
Run Code Online (Sandbox Code Playgroud)

原因是整数0与以下相同-0:

julia> 0 === -0
true
Run Code Online (Sandbox Code Playgroud)

但是花车带有标志位:

julia> 0.0 === -0.0
false
Run Code Online (Sandbox Code Playgroud)