特定值的幂运算符问题

Blo*_*oxx 5 math julia

我正在尝试做一个简单的函数来检查阶乘和斯特林近似之间的差异:

using DataFrames

n = 24
df_res = DataFrame(i = BigInt[],
                    f = BigInt[],
                    st = BigInt[])

for i in 1:n
    fac = factorial(big(i))
    sterling = i^i*exp(-i)*sqrt(i)*sqrt(2*pi)
    res = DataFrame(i = [i],
                    f = [fac],
                    st = [sterling])
    df_res = [df_res;res]
end

first(df_res, 24)
Run Code Online (Sandbox Code Playgroud)

当 i= 16 和 i= 24 时,英镑的结果是 0!。因此,我检查了这两个值的功效,结果为 0:

julia> 16^16
0

julia> 24^24
0
Run Code Online (Sandbox Code Playgroud)

我在 R 中做了同样的代码,没有任何问题。我做错了什么,或者我对 Julia 不了解,而我可能应该了解什么?

rge*_*man 5

根据 Julia整数和浮点数文档,Julia 整数似乎是 32 位或 64 位,具体取决于您的系统。即使它们是 64 位,您的幂运算也会溢出您的值。

Julia 看起来支持任意精度算术,您需要它来存储大的结果值。

根据溢出部分,书写big(n)可以实现n任意精度。