gpt4 book ai didi

julia - 我想找到 Julia 的 0 的数字 - 我的意思是最接近 0 的数字

转载 作者:行者123 更新时间:2023-12-02 19:08:59 26 4
gpt4 key购买 nike

为什么 Julia 会发生这种情况?

我的输入是

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

与 float 无关,而是由Int64溢出引起的。

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

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

或使用使用 big(10) 创建的高精度 BigInt 类型

julia> A=[]
Any[]

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

julia> A
5-element Array{Any,1}:
9.999999999999999999999999999999999999999999999999999999999999999999999999999967e-18
9.999999999999999999999999999999999999999999999999999999999999999999999999999997e-19
9.999999999999999999999999999999999999999999999999999999999999999999999999999997e-20
1.000000000000000000000000000000000000000000000000000000000000000000000000000004e-20
9.999999999999999999999999999999999999999999999999999999999999999999999999999927e-22

您可以在此处找到更多相关讨论 https://docs.julialang.org/en/v1/manual/integers-and-floating-point-numbers/#Overflow-behavior .

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

julia> x = typemin(Int64)
-9223372036854775808

julia> x^2
0

julia> y = typemax(Int64)
9223372036854775807

julia> y^2
1

最后找到最小的正Float64数使用:

julia> nextfloat(0.0)
5.0e-324

julia> eps(0.0)
5.0e-324

关于julia - 我想找到 Julia 的 0 的数字 - 我的意思是最接近 0 的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64618488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com