バグ:数値コモンの初期値が別の値に置き換わる
Issue #325
resolved
数値コモンを作って初期値を17桁以上入力すると入力通りの数値になりません。
例として「11111111111111111111」と入力すると「11111111111111110656」になります。
ゲーム内のイベントで直接大きな数値に設定した場合は入力通りになりました。
環境
win10 64bit 17134.1
CWXEditor / Version.7.0 Beta 3 Build: 2019-11-21 23:10:43 Debug (64-bit)Compiled by Digital Mars D 2089
Comments (4)
-
repo owner -
repo owner pull request #593
とりあえず入力制限は設けず、桁数が多い時に警告を出すようにしました。
-
reporter 仕様だったのですね、これは失礼しました。
問題の起きない範囲内に抑える方針でやってみます。 -
reporter - changed status to resolved
- Log in to comment
ご報告ありがとうございます。
これはコンピュータの数値表現の限界による仕様です。数値一つを表現できるビット数に制限があるため、あまりに大きな値の場合は誤差が生じます。
cwxeditorの場合、整数で正確に表現できるのは二進数で53桁までで、十進数だとおよそ15桁です(実数の場合はもう少し複雑です)。CWPyの方はたしか、十進数で整数28桁だったと思います。乗算などで数値を急速に大きくすると予期しない結果が発生する事が確認できます。
かなり大きな数値が表現できるので、ほとんどの場合は充分かと思うのですが、桁外れに大きな数値を扱う場合は注意していただければと思います。
このような制限があるため、エディタ側で入力制限を設けるか、警告するべきかもしれません。対応を考えます。