web-dev-qa-db-ja.com

固定小数点と浮動小数点数

固定小数点と浮動小数点の数については、Google全体で定義が読みにくいため理解できません。しかし、私が読んだもののどれも、それらが実際に何であるかについて十分に簡単な説明を提供していません。例でわかりやすい定義を取得できますか?

94
user942451

固定小数点数には、整数部分(小数点の左側の部分)に予約されている特定のビット数(または桁)と、小数部分(小数点の右側の部分)に予約されている特定のビット数があります。ポイント)。数字の大きさに関係なく、各部分には常に同じビット数が使用されます。たとえば、固定小数点形式が10進数IIIII.FFFFFである場合、表現できる最大の数値は99999.99999になり、ゼロ以外の最小の数値は00000.00001になります。そのような数値を処理するコードのすべてのビットには、小数点の位置に関する知識が組み込まれている必要があります。

浮動小数点数は、整数部分または小数部分に特定のビット数を予約しません。代わりに、その数に対して特定のビット数(仮数または仮数と呼ばれる)とその中にwhereと言う特定のビット数を予約します小数点以下の桁数(exponentと呼ばれる)。したがって、指数用に予約された2桁で10桁を占める浮動小数点数は、9.9999999e+50の最大値と0.0000001e-49の最小のゼロ以外の値を表す場合があります。

124
Gabe

固定小数点数は、小数点の後に固定桁数があることを意味します。浮動小数点数を使用すると、小数点以下の桁数を変えることができます。

たとえば、小数点の後に正確に4桁を必要とする数値を保存する方法がある場合、それは固定小数点です。その制限がなければ、浮動小数点です。

多くの場合、固定小数点が使用される場合、プログラマーは実際に整数を使用し、一部の桁が小数点を超えていると仮定します。たとえば、2桁の精度を維持したい場合、100という値は実際には1.00を意味し、101は1.01を意味し、12345は123.45などを意味します。

浮動小数点数は、同じように非常に小さい数または非常に大きい数を表すことができるため、より一般的な目的ですが、小数点以下の桁数に余分なストレージが必要になるという小さなペナルティがあります。

30
Vaughn Cato

私の理解では、固定小数点演算は整数を使用して行われます。ここで、小数部分は固定量のビットで保存されます。または、数値に必要な小数桁数を掛けます。

たとえば、数値12.34を保存する必要があり、小数点以下2桁の精度のみが必要な場合、数値に100を掛けて1234を取得します。この数値で計算を実行するときは、このルールセットを使用します。 5620または56.20をこの番号に追加すると、データに6854または68.54が生成されます。

固定小数点数の小数部分を計算する場合は、モジュロ(%)オペランドを使用します。

12.34(擬似コード):

v1 = 1234 / 100 // get the whole number
v2 = 1234 % 100 // get the decimal number (100ths of a whole).
print v1 + "." + v2 // "12.34"

浮動小数点数は、プログラミングのまったく異なる話です。浮動小数点数の現在の標準では、数値のデータに23ビット、指数に8ビット、符号に1を使用しています。 詳細については、このウィキペディアのリンクを参照してください。

4
Mr. Goober

「固定小数点」という用語は、小数点の後に、場合によってはその前に固定の桁数で数字が表される対応する方法を指します。浮動小数点表現では、小数点の位置は、数値の有効数字に対して「浮動」することができます。たとえば、均一な小数点の配置規則を使用した固定小数点表現は、123.45、1234.56、12345.67などの数値を表すことができますが、浮動小数点表現は、さらに1.234567、1233456.7、0.00001234567、1234567000000000などを表すことができます。

3
user3553000