タイトル | : MOD と ¥ の有効範囲 |
投稿日 | : 2024/03/12(火) 22:45 |
投稿者 | : konno | 番 号 | : 11161 11159 番 としき さんへのコメント コメント数 1 |
> オリジナルの prime.bas では関数になっていますよね。> ということは、十進BASICでは関数である、ということだと思いますが?> もしかしたら演算子にもあるかもしれませんけどね。あうう、キチンと読んでいませんでした。 てっきり私がまた間違った言い方をしてしまったのかと。(^^;> > > TurboBasicって、MOD関数またはMOD演算子ってないんですか?> > もちろんありますが、32767以上は駄目みたいです。> N88-BASICのリファレンスでは、演算前に小数点以下は切り捨てられるとはあります> が、上限については記載がありません。試してみたいところではあります。十進BASICで関数を使っているのは、MOD に制限があるからかも。 思いついて TurboBasicでテストプログラムを作ってみました。 'tmod.bas screen 0 print " input ";:input a ' OPEN "mod.dat" FOR append AS#1 'ファイル出力 print " a MOD i ","2bytes "," Froat "," a / i" for i=2 to 5 bb=int((a/i-int(a/i))*i+.5) ' MOD 代替式 print a;"mod";i,a mod i,bb,a/i print#1, a;"mod";i,a mod i,bb,a/i ' next print " a \ i","2bytes "," Froat "," a / i" for i=2 to 5 cc=int(a/i) ' \ 代替式 print a;" \ ";i,a \ i,cc,a/i ' print#1,a;" \ ";i,a \ i,cc,a/i ' next PRINT#1,"" CLOSE#1 100 '入力待ち print " push eny key "; a$=input$(1) if a$="" then 100 end 結果 a MOD/\ i 2bytes Froat a / i" 32767 mod 2 1 1 16383.5 32767 mod 3 1 1 10922.33333333333 32767 mod 4 3 3 8191.75 32767 mod 5 2 2 6553.4 32767 \ 2 16383 16383 16383.5 32767 \ 3 10922 10922 10922.33333333333 32767 \ 4 8191 8191 8191.75 32767 \ 5 6553 6553 6553.4 32768 mod 2 0 0 16384 32768 mod 3 -2 2 10922.66666666667 32768 mod 4 0 0 8192 32768 mod 5 -3 3 6553.6 32768 \ 2 -16384 16384 16384 32768 \ 3 -10922 10922 10922.66666666667 32768 \ 4 -8192 8192 8192 32768 \ 5 -6553 6553 6553.6 32769 mod 2 0 1 16384.5 32769 mod 3 -2 0 10923 32769 mod 4 0 1 8192.25 32769 mod 5 -3 4 6553.8 32769 \ 2 -16384 16384 16384.5 32769 \ 3 -10922 10923 10923 32769 \ 4 -8192 8192 8192.25 32769 \ 5 -6553 6553 6553.8 これを見るとやはり 32768 以上では MOD も ¥ も使えないようですね。 実は今 STIME のタイマーで計算がバグって困ってたんですが、これが原因だったようです。 テストプログラム作成は無駄ではなかった。(~~;
- No.11161 一括表示へ - コメント元:11159 一括表示へ - [ 返信 ] [引用無し] pre