Julia 无穷值,在数学理论中,常规浮点数仅仅是实数集合的一部分,而非全部,还有两个我们无法忽略的边界值,即正无穷大和负无穷大。无穷值在数学上是有意义的,在区间表达或求极限值时经常会遇到。最为常见的情况是除数为零,此时在数学中便对应于无穷值,但在C++、Java等常见的语言中会报出异常,甚至会导致程序陡然崩溃。
但在Julia中,无穷值是正常的浮点数,有着常规浮点数同样的地位,也是浮点型的实例对象,同样可以参与各种计算。所以,除零计算在Julia是正常的操作,不会有任何问题。按照浮点型的不同,Julia分别定义了三对无穷值,具体如表所示。
在64位系统中,Inf等价于Inf64而-Inf等价于-Inf64值。
需要明确的是,不论是正无穷大还是负无穷小,Julia中定义的无穷值都不是一种类型,而是浮点型的数值常量。可以通过typemin()
和typemax()
函数查看无穷值在浮点数集合中所处的位置,例如:
julia> typemin(Float64)
-Inf
julia> typemax(Float32)
Inf32
julia> typemin(Float16)
-Inf16
可见它们与前文定义的常规浮点型同处于实数轴上,而且是对应着浮点类型表达范围的极限。
有了对无穷值的支持,Julia中的浮点运算就可以正常地使用除零操作了,例如:
julia> 1.2/0
Inf
julia> -1.2/0.0
-Inf
julia> Float32(9)/zero(Float16)
Inf32
julia> Float16(9)/zero(Float64)
Inf
julia> typeof(ans)
Float64
实际上,这种操作在数学中也是有意义的。
如果要获知某个变量或值是否是无穷值,可通过isfinite()
或isinf()
函数进行判断,例如:
酷客网相关文章:
评论前必须登录!
注册