當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Julia eps方法用法及代碼示例


用法一

eps(::Type{DateTime}) -> Millisecond
eps(::Type{Date}) -> Day
eps(::Type{Time}) -> Nanosecond
eps(::TimeType) -> Period

返回 TimeType 支持的最小單位值。

例子

julia> eps(DateTime)
1 millisecond

julia> eps(Date)
1 day

julia> eps(Time)
1 nanosecond

用法二

eps(::Type{T}) where T<:AbstractFloat
eps()

返回浮點類型Tmachine epsilon(默認為T = Float64)。這被定義為 1 與 typeof(one(T)) 可表示的下一個最大值之間的差距,相當於 eps(one(T)) 。 (由於 eps(T)Trelative error 的一個界限,因此它是一個 "dimensionless" 數量,如 one 。)

例子

julia> eps()
2.220446049250313e-16

julia> eps(Float32)
1.1920929f-7

julia> 1.0 + eps()
1.0000000000000002

julia> 1.0 + eps()/2
1.0

用法三

eps(x::AbstractFloat)

返回 xunit in last place (ulp)。這是 x 處連續可表示浮點值之間的距離。大多數情況下,如果x兩邊的距離不同,則取兩者中較大的一個,即

eps(x) == max(x-prevfloat(x), nextfloat(x)-x)

此規則的例外是最小和最大的有限值(例如 nextfloat(-Inf)prevfloat(Inf) 用於 Float64 ),它們四舍五入到較小的值。

此行為的基本原理是 eps 限製了浮點舍入誤差。在默認的 RoundNearest 舍入模式下,如果 y 是實數且 x 是最接近 y 的浮點數,則

另請參閱: nextfloat issubnormal floatmax

例子

julia> eps(1.0)
2.220446049250313e-16

julia> eps(prevfloat(2.0))
2.220446049250313e-16

julia> eps(2.0)
4.440892098500626e-16

julia> x = prevfloat(Inf)      # largest finite Float64
1.7976931348623157e308

julia> x + eps(x)/2            # rounds up
Inf

julia> x + prevfloat(eps(x)/2) # rounds down
1.7976931348623157e308

相關用法


注:本文由純淨天空篩選整理自julialang.org大神的英文原創作品 Base.eps — Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。