剰余の比較が正しくされないです(バグ報告掲示板

投稿: Material 305033 1 mini cfm_ 投稿:2016/01/13 18:06:13(最新:2016/04/12 19:23:12)
ノベルゲームのシーンエディタです。
speak(0*2==0)はTrueと出るのに、
speak(0%2==0)を実行すると、NaNと発言され、
同じように、if 0%2==0 を実行すると、False扱いになります。

また、speak((0%2)==0)とするとTrueと正しくなりました。

コメントする

コメントするには、ログインする必要があります。

コメント一覧

Material 305033 1 mini cfm_(投稿日:2016/04/12 19:23, 履歴)
追記

speak(3%2+1)
を実行すると、0と表示される(それぞれの数字が何であっても0と表示)
Cdv30200 aoi icon mini aoihikawa(投稿日:2016/01/17 12:50, 履歴)
そもそも
0を割るという行為(ゼロ除算)自体が
数学的に例外であり、
コンピュータ計算上も
エラーを出すのが一般的です

これを防ぐためには
予め、0であるかどうかのif文を設定しておき、
0以外の場合、除算や余算を行う、
という処理に直せば正しく動作します
Material 305033 1 mini cfm_(投稿日:2016/01/18 18:20, 履歴)
すいません。「ゼロを割る」でなく「ゼロで割る」でないですか?
それで、説明が悪かったかもしれません
speak(1%2==0)
speak(2%2==0)
speak(3%2==0)
speak(1%2==1)
speak(2%2==1)
speak(3%2==1)

これらすべてでNaNが返されます。
Cdv30200 aoi icon mini aoihikawa(投稿日:2016/01/19 18:04, 履歴)
申し訳ありません
一部、誤解をしておりました


追記して頂いたとおり、
speak(1%2==0)

また、
a = 1%2==0
speak(a)

でもNaNと表示されることを確認しました
 
なお、
speak((1%2)==0)

および
a = 1%2
speak(a==0)

は正常に表示されるようです
 
もしかすると
文章表示方法と文章表示中の効果
こちらが関係しているのかもしれませんが、
理由や原因については
私もよくわかりません、、、

もしくは、
単純に算術の優先順位が
%より==のほうが
高いのかもしれません、、、
Material 305033 1 mini cfm_(投稿日:2016/01/19 18:06, 履歴)
素早い回答、ありがとうございました!
Material 305033 1 mini cfm_(投稿日:2016/01/15 18:13, 履歴)
バグじゃないかもしれないですが、ついでに。
RPGのイベントで、fadeOut(0, 0, 0)をしてからFadeIn()までの間にspeak()を使うと操作不能になります。
Cdv30200 aoi icon mini aoihikawa(投稿日:2016/01/17 12:52, 履歴)
fadeOut関数により
全ての表示がフェードアウトしている裏側で
speak関数の表示が行われています

クリックを繰り返すことで
speak関数で表示された内容が処理完了すれば
fadein関数が実行され、
再び画面が復帰されます