作者Cidolfas ()
看板Statistics
标题[程式] R 数值跑出"整数向上溢位产生了 NA"
时间Tue Apr 20 23:50:34 2010
[软体程式类别]:R
[程式问题]:大一点的数值跑不出来
[软体熟悉度]:低(1~3个月)
[问题叙述]:我尝试用R写斐波那契数列,数值小的时候能顺利跑出,
但当所求值大於46时,所求跑出
"整数向上溢位产生了 NA"
请问该如何解决。谢谢
[程式范例]:
rm(list=ls(all=TRUE))
f=0:50
i=1
for(i in 1:50)
{
f[i+2]=f[i+1]+f[i]
cat(i,f[i+1],"\n")
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.85.174.32
※ 编辑: Cidolfas 来自: 219.85.174.32 (04/20 23:53)
1F:推 kvince:f=numeric(51);f[2]=1;for(i in 3:51){f[i]=f[i-1]+f[i-2]} 04/21 00:18
2F:→ Cidolfas:能请教整数向上溢位是什麽意思吗?谢谢 04/21 08:58
3F:→ gsuper:f 只有 51 个数字 , 而你回圈的第一行指定了第 52 个数字 04/21 13:06
4F:→ gsuper:好像不太对 我再想想 04/21 13:07
5F:推 gsuper:可能是到达 numeric vector 物件的记忆体上限 04/21 18:40
6F:→ clickhere:1134903170 + 1836311903在R中,它用double帮你加完在转 04/21 23:37
7F:→ clickhere:成integer.如果纯用integer相加,如 f[47]+f[46], 则是 04/21 23:38
8F:→ clickhere:as.integer(1134903170) + as.integer(1836311903) 04/21 23:39
9F:→ clickhere:在R中,最大正整数为 as.integer(2^31-1). 04/21 23:39
10F:→ clickhere:所以就是overflow了. 04/21 23:40
11F:→ clickhere:一般32位元的机器整数只有10digits,double可以有16. 04/21 23:47
12F:→ clickhere:wiki:float point or fixed point integer 04/21 23:47