Julia power operator未按预期工作
我只是在试验Julia,发现它在运行时给出的值不正确: 输入:Julia power operator未按预期工作,julia,Julia,我只是在试验Julia,发现它在运行时给出的值不正确: 输入: println(1000^6) println(1000^7) println(1000^8) println(1000^9) 1000000000000000000 3875820019684212736 2003764205206896640 -6930898827444486144 输出: println(1000^6) println(1000^7) println(1000^8) println(1000^9) 10
println(1000^6)
println(1000^7)
println(1000^8)
println(1000^9)
1000000000000000000
3875820019684212736
2003764205206896640
-6930898827444486144
输出:
println(1000^6)
println(1000^7)
println(1000^8)
println(1000^9)
1000000000000000000
3875820019684212736
2003764205206896640
-6930898827444486144
这是一个问题还是我做错了?如前所述,问题是由于整数溢出造成的。您可以在Int64中存储的最大值可以通过以下方式获得:
julia> typemax(Int64)
9223372036854775807
但是,1000^9
更大,正如您可以看到的:
julia> BigInt(1000)^9
1000000000000000000000000000
这是由于整数溢出,请使用
BigInt
代替:println(BigInt(1000)^7)
,我相信这个问题是重复的。您可以阅读有关整数溢出的内容,以及Julia选择此路径的原因:,基本上,BigInt
也是一种DataType
类似于Int64
或Float64
但没有最大限制,即typemax(BigInt)
不起作用。Int64或Float64是。BigInt是一个可变结构
(参见源代码)。它的内存占用会按需增长。在引擎盖下,它使用图书馆。