プレイ日記
だにえる haru2016nen
なんか動作おかしいと思ったら、 そういうことだったのか、、、。 IF 0.1 OR 0.1 はTRUEにならないんだね
4そうだね
プレイ済み
返信[1]
親投稿
小数無効なんだよね
0そうだね
プレイ済み
返信[2]
親投稿
(内部的には小数も2進数なんだけど、ビット演算の際には切り捨てられるのよね…)
0そうだね
プレイ済み
返信[3]
親投稿
otta777 otta777a
ビット演算子の引数は符号付き32ビットの整数に変換されてから 処理されてると思いますよ。
1そうだね
プレイ済み
返信[4]
親投稿
だにえる haru2016nen
少数無効というか、、、 結局は二進数みたいですね。 IF 0.5 {二進数の0.1}なのでTRUEになる。 本当に少数無効だったら IF 1<=A を IF A    に出来ると思ったのに
1そうだね
プレイ済み
返信[5]
親投稿
だにえる haru2016nen
BIN$ってのがあったから 使ってみたけど、これは少数無効か。 0.1って二進数でどれくらい桁使う のかは、検索すると、 0.00011001100~~~ のようです。
1そうだね
プレイ済み
返信[6]
親投稿
マギー M191246
1. IF ~ THENの ~の部分は、0以外なら TRUEあつかいになるようです。 マイナスの数もTRUEなので IF A THENとすると A=-1でもTRUEになることになります。
2そうだね
プレイ済み
返信[7]
親投稿
マギー M191246
2. あまさとさんや、otta777さんが おっしゃっているのは ORの計算の話です。 プチコンが 0.1 OR 0.1を 計算するとき、整数しか計算できないので 先に0.1 → 0として 小数点以下を切り捨てて (この時点で小数無効) 0 OR 0 を計算します。 答は、0なので FALSEあつかいになりますね。
2そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
Aが負数でないならばIF 0 OR A THEN ~で望んでいるような結果になると思います。 整数化のFLOORが長いのとORの方が速いのが理由でプチコンmkIIでは0 ORを使った整数化は結構ポピュラーなテクニックでした。 ちなみに0.1は2進数だと循環小数ですが、プチコン3号の実数型では符号と指数部を含めて64桁で丸めています。 64桁がどんな感じなのかは私の自作関数BIN64$を使えば簡単に分かります。 https://miiverse.nintendo.net/posts/AYIHAAAEAAArVRTkBciitw
2そうだね
プレイ済み