QRコード
QRCODE
アクセスカウンタ
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。解除は→こちら
現在の読者数 0人
オーナーへメッセージ
slMame › 一日一膳腹八分目 › 2009年08月09日

  

Posted by at

2009年08月09日

PIの比較で90度と270度を切り分けるには・・

ループ処理で角度を加算している部分で、

単純に

if(Theta==PI*0.5) {} else if (Theta==PI*1.5) { }

では浮動小数点の比較でうまくいかない状態でした。


そこで、

if ((float)((string)(Theta*RAD_TO_DEG))==90.0) { }

の様に、いったん文字列にした後にfloatに戻して比較すると期待通りに動作しました。
また、PHPのround()関数の様な物を用意しておいて、任意ケタでいったん丸めてから比較してやると動きました。

型変換とどちらが良いのでしょうか。。。ちょっと不明。

もっとも、90度と270度を切り分けるなんて、めったに出てきませんが・・^^;



// www.lsleditor.org  by Alphons van der Heijden (SL: Alphons Jano)
float round(float a,integer p)
{
float t=llPow(10.0,p);
return llRound(a*t)/t;
}
test(float theta)
{
if (ceil(theta,6)==ceil(0.5*PI,6)) {
llSay(0, "0.5");
}else if (ceil(theta,6)==ceil(1.5*PI,6))
{
llSay(0, "1.5");
}
 
}
default
{
state_entry()
{
integer i=64;
float dtheta=2.0*PI/i;
float theta=0;
while(i--)
{
theta=dtheta*i;
test(theta);
}
}
}
  


Posted by RBK Drachnyd(しお) at 17:19Comments(0)忘れない為に。。