溢出行为
在 Julia 里,超出一个类型可表示的最大值会导致环绕 (wraparound) 行为:
实例
julia> x = typemax(Int64)
9223372036854775807
julia> x + 1
-9223372036854775808
julia> x + 1 == typemin(Int64)
true
因此,Julia 的整数算术实际上是模算数的一种形式,它反映了现代计算机实现底层算术的特点。在可能有溢出产生的程序中,对最值边界出现循环进行显式检查是必要的。否则,推荐使用任意精度算术中的 BigInt 类型作为替代。
下面是溢出行为的一个例子以及如何解决溢出:
实例
julia> 10^19
-8446744073709551616
julia> big(10)^19
10000000000000000000