2008年11月04日
煩悩の数だけループっす
ビッグぺんに動きつけてみたっす。
カクカクしてるっすけどね。
どうもぺんぎんっす( ◎v◎ )
今日は「1万回やってみました」を・・・
と行きたいトコなんっすけど、
floatについてちょっと調べてたっす。
まずは下のコードを見て欲しいっす。
///////////////////////////////////////////
The MIT Lisences
Copyright 2008 Naoya Bellic
///////////////////////////////////////////
default
{
state_entry()
{
integer i;
float x = 0.0;
for(i=0;i<108;i++)
{
x += 0.1;
}
llSay(0,(string)x);
}
}
0.1を108回加算してるだけっす。
10.800010ってSayされると思うっす。
ループが107回までは欲しい値が出るっす。
「無視できるほど小さい」んっすけど、
if文の中に入ってる場合だと都合が悪いかもっす。
なーんか気持ち悪いので原因を継続調査っす。
カクカクしてるっすけどね。
どうもぺんぎんっす( ◎v◎ )
今日は「1万回やってみました」を・・・
と行きたいトコなんっすけど、
floatについてちょっと調べてたっす。
まずは下のコードを見て欲しいっす。
///////////////////////////////////////////
The MIT Lisences
Copyright 2008 Naoya Bellic
///////////////////////////////////////////
default
{
state_entry()
{
integer i;
float x = 0.0;
for(i=0;i<108;i++)
{
x += 0.1;
}
llSay(0,(string)x);
}
}
0.1を108回加算してるだけっす。
10.800010ってSayされると思うっす。
ループが107回までは欲しい値が出るっす。
「無視できるほど小さい」んっすけど、
if文の中に入ってる場合だと都合が悪いかもっす。
なーんか気持ち悪いので原因を継続調査っす。
0.1を2進数で表すと、循環小数になるっす。
0.00011001100110011001100110011・・・(2)
仮数部は23bitsなので、丸められて
0.000110011001100110011001101
=1.10011001100110011001101 * 2^(-4)
ってなってるっす。
0.00011001100110011001100110011・・・(2)
仮数部は23bitsなので、丸められて
0.000110011001100110011001101
=1.10011001100110011001101 * 2^(-4)
ってなってるっす。
Posted by ぺんぎん at 22:41│Comments(0)
│スクリプト