ここには2つの質問があります。
とにかく、なぜ浮動小数点演算が必要なのですか?
Karl Bielefeldtが指摘するように、浮動小数点数を使用すると、物理的な世界だけでなく、ビジネスや金融のような場所でも、連続した量をモデル化できます。
私は、プログラミングキャリアの多くの多くの分野で浮動小数点演算を使用しました。化学、AutoCADでの作業、財務予測を行うためのモンテカルロシミュレーターの作成です。実際、David E. Shawという名前の男がいます。彼はウォール街に浮動小数点ベースの科学モデリング手法を適用して数十億ドルを稼いでいます。
そして、もちろん、コンピューターグラフィックスもあります。私はユーザーインターフェイスの見た目の美しさの開発について相談しますが、最近では浮動小数点、三角法、微積分、線形代数をしっかりと理解せずにそれをやろうとすると、ポケットナイフで銃撃戦をするようなものになります。
なぜ誰もがフロート対ダブルが必要なのでしょうか?
IEEE 754標準表現と、32ビット浮動小数点7小数精度の桁、および範囲内の指数10についてあなたを与える-38 10へ38。64ビットは、ダブル10の範囲の15進精度の桁数、および指数についてあなたを与える-307 10への307。
誰もが合理的に必要とするものにはフロートで十分だと思われるかもしれませんが、そうではありません。たとえば、実世界の多くの数量は7桁以上の10進数で測定されます。
しかし、もっと微妙に、「ラウンドオフエラー」と口語的に呼ばれる問題があります。2進浮動小数点表現は、1 / 2、1 / 4、3 / 4など、分数部分の分母が2の累乗である値に対してのみ有効です。1/ 10などの他の分数を表すには、「丸め」ます最も近いバイナリ分数の値ですが、それは少し間違っています-それは「ラウンドオフエラー」です。その後、これらの不正確な数値を計算すると、結果の不正確さは最初の値よりもはるかに悪くなることがあります。エラーの割合が乗算されたり、指数関数的に積み重なることさえあります。
とにかく、処理する必要のあるバイナリ桁が多いほど、丸められたバイナリ表現は表現しようとしている数値に近くなるため、丸め誤差は小さくなります。その後、計算を行うときに、使用する数字が多い場合は、累積的な丸め誤差が問題のある場所に蓄積する前に、さらに多くの操作を行うことができます。
実際には、10進数の15桁の64ビットの倍精度は、多くのアプリケーションにとって十分ではありません。私は1985年に80ビットの浮動小数点数を使用していましたが、IEEEは現在、128ビット(16バイト)の浮動小数点型を定義しています。