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
Run Code Online (Sandbox Code Playgroud)
但这不对
julia> isequal(sort(abs(diag(r)))[1],convert(AbstractFloat,0.0))
false
Run Code Online (Sandbox Code Playgroud)
Julia中有一个函数来检查等于零的浮点数吗?
-1.66533e-16
是不是等同于零.然而,它大约等于零(相对于特定的公差),而julia确实提供了这样的功能:
isapprox(1e-16, 0.0; atol=1e-15, rtol=0)
Run Code Online (Sandbox Code Playgroud)
编辑:或克里斯指出的那样,一个很好的选择atol
是eps()
对应于机器精度用于该特定类型:
julia> isapprox(1e-20, 0.0; atol=eps(Float64), rtol=0)
true
Run Code Online (Sandbox Code Playgroud)
请阅读描述isapprox
以查看默认参数的含义,并查看您是否更喜欢"绝对"或"相对"容差方法(或混合方法).虽然为了与零进行比较,但使用绝对公差很好并且可能更直观.