朱莉娅浮点数比较为零

Use*_*tra 2 julia

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中有一个函数来检查等于零的浮点数吗?

Tas*_*nou 5

-1.66533e-16不是等同于零.然而,它大约等于零(相对于特定的公差),而julia确实提供了这样的功能:

isapprox(1e-16, 0.0; atol=1e-15, rtol=0)
Run Code Online (Sandbox Code Playgroud)

编辑:或克里斯指出的那样,一个很好的选择atoleps()对应于机器精度用于该特定类型:

julia> isapprox(1e-20, 0.0; atol=eps(Float64), rtol=0)
true
Run Code Online (Sandbox Code Playgroud)

请阅读描述isapprox以查看默认参数的含义,并查看您是否更喜欢"绝对"或"相对"容差方法(或混合方法).虽然为了与零进行比较,但使用绝对公差很好并且可能更直观.