Julia

浮点数类型:

Float64 类型,双精度,64 位

Float32 类型,单精度,32 位

Float16 类型,半精度,16 位

julia> 5.0
5.0

julia> 5.
5.0

julia> 0.3
0.3

julia> .3
0.3

julia> -1.2
-1.2

julia> -2.
-2.0

julia> 1e33  # 科学记数法
1.0e33

julia> 2e-7  # 科学记数法
2.0e-7

这些结果都是 Float64 的值

十六进制浮点数的类型只能是 Float64

julia> 0x7p1
14.0

julia> typeof(ans)
Float64

julia> 0x.5p-2
0.078125

julia> typeof(ans)
Float64

使用 f 来进行 Float32 值的输入

julia> 1f33
1.0f33

julia> typeof(ans)
Float32

julia> 2f-7
2.0f-7

julia> typeof(ans)
Float32

 浮点数类型转换为 Float32

julia> Float32(0.2)
0.2f0

julia> typeof(ans)
Float32

julia> Float32(-1.2)
-1.2f0

julia> typeof(ans)
Float32

julia> Float32(1e33)
1.0f33

julia> typeof(ans)
Float32

有的版本的半精度浮点数 Float16 只用来存储,计算时会被转换为 Float32

julia> 2 * Float16(4.)
8.0f0

julia> typeof(ans)
Float32

新版本 Float16 计算时也是 Float16

julia> 2 * Float16(4.)
Float16(8.0)

julia> typeof(ans)
Float16

精度

eps 函数可以用来计算浮点相对精度,即计算 1.0 到下一个可表示的浮点数之间的距离

julia> eps(Float32)
1.1920929f-7

julia> eps(Float64)
2.220446049250313e-16

julia> eps()  # 相当于 eps(Float64)
2.220446049250313e-16

eps 函数的参数是浮点数,则计算这个值和下一个可表示的浮点数的绝对差

eps(x) 的结果与 x 同类型,且满足 x + eps(x) 是下一个比 x 稍大的、可表示的浮点数

julia> eps(1.2)
2.220446049250313e-16

julia> eps(2.)
4.440892098500626e-16

julia> eps(1e33)
1.4411518807585587e17

julia> eps(0.0)
5.0e-324

相邻的两个浮点数之间的距离并不是固定的,数值越小,间距越小;数值越大,间距越大

浮点数在 0 附近最稠密,随着数值越来越大,数值越来越稀疏,数值间的距离呈指数增长

如果 x 为 64 位浮点数,则 eps(x) 与 eps(Float64) 相同

julia> eps(Float64)
2.220446049250313e-16

julia> eps(1.3)
2.220446049250313e-16

nextfloat 函数和 prevfloat 函数用来获取下一个或上一个浮点数

julia> x = 1.01
1.01

julia> nextfloat(x)
1.0100000000000002

julia> prevfloat(x)
1.0099999999999998

特殊的浮点数

Inf16(Float16),Inf32(Float32),Inf(Float64) 为正无穷,比所有的有限的浮点数都大

-Inf16(Float16),-Inf32(Float32),-Inf(Float64) 为负无穷,比所有的有限的浮点数都小

NaN16(Float16),NaN32(Float32),NaN(Float64) 为不存在,不能和任意浮点数比较大小(包括本身)

julia> Inf + Inf
Inf

julia> Inf - Inf
NaN

julia> Inf * Inf
Inf

julia> Inf / Inf
NaN

julia> 0 / 0
NaN

julia> 0 * Inf
NaN

julia> 1 + Inf
Inf

julia> 1 - Inf
-Inf

julia> 1 / Inf
0.0

julia> 1 / 0
Inf

julia> -1 / 0
-Inf

浮点型的 typemin 和 typemax 函数

julia> typemin(Float16)
-Inf16

julia> typemax(Float16)
Inf16

julia> typemin(Float32)
-Inf32

julia> typemax(Float32)
Inf32

julia> typemin(Float64)
-Inf

julia> typemax(Float64)
Inf
原文地址:https://www.cnblogs.com/sch01ar/p/9494578.html