Julia 我想找出与朱莉娅的0对应的数字-我指的是最接近的0

Julia 我想找出与朱莉娅的0对应的数字-我指的是最接近的0,julia,underflow,Julia,Underflow,为什么朱莉娅会这样 我的意见是 A = [] for i = 17:21 t = 1/(10^(i)) push!(A, t) end return(A) 结果是: 5-element Array{Any,1}: 1.0e-17 1.0e-18 -1.1838881245526248e-19 1.2876178137472069e-19 2.5800991659088344e-19 我注意到 A[3]>0 false 我想找到与Julia的0对应的数

为什么朱莉娅会这样

我的意见是

A = []
for i = 17:21
    t = 1/(10^(i))
    push!(A, t)
end
return(A)
结果是:

5-element Array{Any,1}:
  1.0e-17
  1.0e-18
 -1.1838881245526248e-19
  1.2876178137472069e-19
  2.5800991659088344e-19
我注意到

A[3]>0
false

我想找到与Julia的0对应的数字,但我找到了这个,不明白。

出现此问题的原因是当您有
I=19
时,请注意:

julia> 10^19
-8446744073709551616
它与浮点数无关,但由
Int64
溢出引起

下面是将按照您的预期工作的代码。使用
10.0
而不是
10
,因为
10.0
是一个
Float64
值:

julia> A=[]
Any[]

julia> for i=17:21
       t=1/(10.0^(i))
       push!(A,t)
       end

julia> A
5-element Array{Any,1}:
 1.0e-17
 1.0e-18
 1.0e-19
 1.0e-20
 1.0e-21
或者使用高精度的
BigInt
类型,该类型是使用
big(10)

你可以在这里找到更多关于这方面的讨论

例如,请注意(如果不知道溢出情况,您可能会感到惊讶):

最后,要找到最小的正
Float64
number,请使用:

julia> nextfloat(0.0)
5.0e-324

julia> x = typemin(Int64)
-9223372036854775808

julia> x^2
0

julia> y = typemax(Int64)
9223372036854775807

julia> y^2
1
julia> nextfloat(0.0)
5.0e-324
julia> eps(0.0)
5.0e-324