Julia power operator未按预期工作

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

我只是在试验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)
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是一个
可变结构
(参见源代码)。它的内存占用会按需增长。在引擎盖下,它使用图书馆。