julia> r
3×3 Array{Float64,2}:
-1.77951 -0.79521 -2.57472
0.0 0.630793 0.630793
0.0 0.0 -1.66533e-16
julia> sort(abs(diag(r)))[1]
1.6653345369377348e-16
julia> isequal(floor(sort(abs(diag(r)))[1]),0)
true
但这不对
julia> isequal(sort(abs(diag(r)))[1],convert(AbstractFloat,0.0))
false
Julia中是否有一个函数来检查等于零的浮点数?
答案 0 :(得分:5)
-1.66533e-16
不等于零。然而,大约等于零(相对于特定的公差),而julia确实提供了这样的功能:
isapprox(1e-16, 0.0; atol=1e-15, rtol=0)
编辑或正如Chris指出的那样,atol
的一个不错的选择是eps()
,它对应于该特定类型的机器精度:
julia> isapprox(1e-20, 0.0; atol=eps(Float64), rtol=0)
true
请阅读isapprox
的说明,了解默认参数的含义,并了解您是否更喜欢“绝对”或“相对”容差方法(或混合方法)。虽然具体来说与零相比,使用绝对容差很好,可能更直观。