2 つの非常に大きな数に対して単純な減算演算を実行しようとしています。
(- 1.8305286640724363e+023 (floor 1.8305286640724363e+023))
これを行うと、0.0 という結果が得られます。私は次の出力を期待しています:
(- 1.8305286640724363e+023 (floor 1.8305286640724363e+023)) => .2439521
拡張された科学表記法がその答えを教えてくれます。
183052866407243622723319.24395251 - 183052866407243622723319.00 = .2439521
これらの数値を、科学表記法ではなく 10 進数を使用してそのまま表現したいので、目的の結果を得ることができます。スキーム内でこれを行う方法はありますか? ヘルプ、ガイダンス、またはリファレンスをいただければ幸いです:)
DrRacket for Windows 64bit と R5RS Language を使用しています。
編集
私が実行している算術の例について、できるだけ具体的に説明したいと思います。
算術:
(* 271979577247970257395 0.6180339887) => 1.6809262297150285e+020
これと同じ掛け算を電卓で行うと、結果は => 168092622971502827156.7975214365 になります。
正確または不正確を使用しようとすると、次のようになります。
(exact (* 271979577247970257395 0.6180339887)) => exact: undefined;
(inexact (* 271979577247970257395 0.6180339887)) => inexact: undefined;
R5RS は正確/不正確をサポートしていないと思いますか? 私はそれを調べて、例は不正確->正確な手順を使用することを示しているので、私はそうしてこれを得ました:
(inexact->exact (* 271979577247970257395 0.6180339887)) => 168092622971502854144
そして、具体的に言うと、私は反対のことをしました:
(exact->inexact (* 271979577247970257395 0.6180339887)) => 1.6809262297150285e+020
それで、誰かが言ったように Big Float を使ってみました:
(bf-precision 128)
(bf (* 271979577247970257395 0.6180339887)) => (bf 168092622971502854144)
正確と同じ出力が得られます。私が単に望んでいるのは、電卓から得られる数値を保存することだけであり、それは非常に難しい作業のようです! これを理解していないのは愚かに聞こえるかもしれませんが、申し訳ありませんが、私は SCHEME の極端なアマチュアであることを覚えておいてください。ご協力いただきありがとうございます。:)