我正在嘗試做一個簡單的函式來檢查階乘和斯特林近似之間的差異:
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)
當 i= 16 和 i= 24 時,英鎊的結果是 0!。因此,我檢查了這兩個值的功率,結果為 0:
julia> 16^16
0
julia> 24^24
0
我在 R 中做了同樣的代碼,沒有問題。我做錯了什么,或者我對 Julia 不了解,我可能應該知道什么?
uj5u.com熱心網友回復:
根據Integers and Floating-Point Numbers的 Julia 檔案,Julia 整數似乎是 32 位或 64 位,具體取決于您的系統。即使它們是 64 位,您的求冪也會溢位您的值。
Julia 看起來支持Arbitrary Precision Arithmetic,您需要存盤較大的結果值。
根據溢位部分,寫作big(n)會產生n任意精度。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/449134.html
