前にも書いたと思いますが、もうちょっと行番号の並びとかインデントに気を配ってプログラムを書いていただけないでしょうか。バグが混入し易くなりますよ、と、繰り返しお伝えしていますよね。やって、残り少ない人生を無駄にしてしまうわけですから。このプログラムだと、N88なら、ループ内での途中表示は全くないはず。#11195の結果は出ないはず。すると、あの結果はどうやって出したのだろう。結果の出たあと、プログラムを書き換えてからアップした?違う処理系での結果をN88での結果と間違えて書いた?それはさておき。入浴していたときにつらつらと思い出したこと。大学時代の情報処理初級の授業で、丸め誤差と打切り誤差、桁落ち、情報落ちの違い、なんてことをやったわけですよ。ほとんど覚えていませんがね。いった誤差をなくすための方法として多倍長精度演算というのがある、ということも思い出しました。こいつをやるとてきめんに遅くなるのですが、誤差も非常に少なくなる。多倍長用のuBASICというのを知ったのは、確か私が大学を卒業した直後ぐらいだったか。多倍長っていうのは、例えば、1バイトに数字一桁しか格納しない、という方法。実際の実装では、そんなことやっていたらメモリ効率が悪いので、1バイトに0から99までの2桁の数字を格納する、なんていうのが多いかな。86のアセンブラにもそれようの命令があったんじゃないかな、BCD演算、というやつ。Z80にはあったような気がする。アセンブラにあるくらいだからBASICにもあるわけでして、もしかしたら上記のuBASICがそうだったかもしれないけど、10進BASICという実装があったはず。やってみたらどうでしょう。1回多くループするところで、いったい何がおきているのか見えてくるかも。1まとレスで失礼します。ここですでに値が異なります。表示だけ倍精度、という可能性が濃厚。うう、眠くてよく見てませんでした。(>_<)表示だけ倍精度、が正解のようですね。N88の場合、仕様では、引数の型が結果の型、ということになっています。いう単精度型で割り算をしています。してみたら、もしかしたら違いが出てくる可能性があります。自動で変換されてしまっていました。インタプリタでは精度指定の無い定数は自動的に単精度になるのですね。コンパイラのほうでも。