0

固定小数点数と浮動小数点数のコンピューター アーキテクチャのさまざまな長所と短所は何ですか? どちらもある種の不正確さにつながることは理解できます。

私の他の質問は

  1. これらの不正確さはどのように発生しますか?

  2. あるフォームは他のフォームよりも優れていますか?

4

2 に答える 2

3

浮動小数点ガイドから:

浮動小数点数が必要な理由

コンピューターのメモリは限られているため、2 進数を使用するか 10 進数を使用するかに関係なく、無限の精度で数値を格納することはできません。ある時点で切り捨てる必要があります。しかし、どの程度の精度が必要ですか?そして、それはどこに必要ですか?整数の桁数と小数の桁数は何桁ですか?

  • 高速道路を建設する技術者にとっては、幅が 10 メートルであろうと 10.0001 メートルであろうと関係ありません。そもそも彼の測定値は、おそらくそれほど正確ではありません。
  • マイクロチップを設計する人にとって、0.0001 メートル (10 分の 1 ミリ) は大きな違いですが、0.1 メートルを超える距離に対処する必要はありません。
  • 物理学者は、同じ計算で光速 (約 300000000) とニュートンの重力定数 (約 0.0000000000667) を一緒に使用する必要があります。

エンジニアとチップ設計者を満足させるために、数値形式は、非常に異なる大きさの数値の精度を提供する必要があります。ただし、相対精度のみが必要です。物理学者を満足させるには、大きさの異なる数を含む計算を実行できなければなりません。

基本的に、固定数の整数桁と小数桁を持つことは役に立ちません。解決策は、浮動小数点を使用した形式です。

他の質問について:

  1. すべての不正確さは、まさに 1 つの理由で発生します。無限の量のデータ (すべての有理数など) を限られたスペース (64 ビットなど) に収めようとしているからです。フォーマット間で唯一異なるのは、正確に表現できる数値の分布方法です。
  2. 浮動小数点形式の方が優れています。固定小数点フォルマントの制限の多くはありませんが、まだ多くの制限があります (ほぼすべての固定小数点形式にもあります)。

そうは言っても、浮動小数点と固定小数点の問題は、2 進と 10 進と混同されることがよくあります。具体的には、2 進浮動小数点形式と (暗黙的に) 10 進固定小数点形式をよく比較します。小数を正確に表現できないことは、ほとんどの人を驚かせるものであり、結果的に「浮動小数点形式」の大きな欠点と見なされますが、実際にはそれはバイナリ形式の欠点であり、できないことにまったく驚かないのです。 1/3 のような数値を正確に表す。

于 2011-05-23T11:42:59.400 に答える
0

使用しているプログラミング言語を指定していませんが、ほとんどのプログラミング言語には固定小数点型が組み込まれていません。

C や C++ などの主流言語には、整数型と浮動小数点型があります。たとえば、小数点以下 4 桁の固定小数点型のようなものを使用する場合は、既存の整数型の上にこれを実装する必要があります。または、既存のライブラリを使用します。

どちらが良いかという質問になると、答えは「場合による」です。考慮しなければならないことは次のとおりです。

  • どのようなハードウェアを使用する予定ですか? 最近のほとんどのホスト マシン (PC:s) には、ハイエンドの組み込みシステムと同様に、専用の浮動小数点ハードウェアがあります。ただし、ローエンドの組み込みシステムを使用する場合はそうではないため、既存のアセンブラー命令に関して浮動小数点演算を実装する必要があります。

  • アプリケーションの性質は何ですか? たとえば、小数点以下4桁で自然に機能しますか。最下位ビットなどで丸め誤差が発生するとどうなりますか。

于 2011-05-23T11:50:41.433 に答える