当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。