我正在尝试做一个简单的函数来检查阶乘和斯特林近似之间的差异:
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 不了解,而我可能应该了解什么?
根据 Julia整数和浮点数文档,Julia 整数似乎是 32 位或 64 位,具体取决于您的系统。即使它们是 64 位,您的幂运算也会溢出您的值。
Julia 看起来支持任意精度算术,您需要它来存储大的结果值。
根据溢出部分,书写big(n)可以实现n任意精度。
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |