Google全体で固定小数点と浮動小数点の定義を読みにくいため、固定小数点と浮動小数点の数を理解できません。しかし、私が読んだものはどれも、それらが実際に何であるかについて十分に単純な説明を提供していません。例を使ってわかりやすい定義を取得できますか?
Google全体で固定小数点と浮動小数点の定義を読みにくいため、固定小数点と浮動小数点の数を理解できません。しかし、私が読んだものはどれも、それらが実際に何であるかについて十分に単純な説明を提供していません。例を使ってわかりやすい定義を取得できますか?
回答:
固定小数点数には、整数部(小数点の左側の部分)用に予約された特定のビット数(または桁)と、小数部(小数点の右側の部分用)に予約された特定のビット数があります。ポイント)。数値がいくら大きくても小さくても、各部分に常に同じビット数を使用します。たとえば、固定小数点形式が10進数のIIIII.FFFFF
場合、表現できる最大の数値は99999.99999
0で、ゼロ以外の最小の数値はになります00000.00001
。このような数値を処理するコードのすべてのビットには、小数点の位置に関する組み込みの知識が必要です。
浮動小数点数は、整数部または小数部に特定のビット数を予約しません。代わりに、特定の数のビット(仮数または仮数と呼ばれます)と特定のビット数を予約して、その数の中で小数点以下がどこにあるか(指数と呼ばれます)を示します。そのため、指数用に2桁が予約されている10桁の浮動小数点数は、の最大値9.9999999e+50
と最小の非ゼロ値を表す可能性があり0.0000001e-49
ます。
-9.9999999e+50
。
00000.00001
ですか?00000.00000
代わりに見ると期待しています。また、固定小数点数について詳しく説明している参考資料はありますか?
固定小数点数は、小数点の後の桁数が固定であることを意味します。浮動小数点数では、小数点以下の桁数を変えることができます。
たとえば、小数点の後に正確に4桁を必要とする数値を格納する方法がある場合、それは固定小数点です。その制限なしでは、それは浮動小数点です。
多くの場合、固定小数点を使用する場合、プログラマーは実際には整数を使用し、一部の桁が小数点を超えていると想定します。たとえば、2桁の精度を保持したい場合、値100は実際には1.00を意味し、101は1.01を意味し、12345は123.45を意味します。
浮動小数点数は、同じように非常に小さい数値または非常に大きい数値を表すことができるため、より一般的な目的ですが、小数点以下の桁数を格納するための追加のストレージが必要になるという小さなペナルティがあります。
私の理解では、固定小数点演算は整数を使用して行われます。小数部は固定ビット数で格納されるか、または数値に必要な小数精度の桁数を乗算します。
たとえば、数値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を使用しています。詳細については、このWikipediaのリンクを参照してください。
「固定小数点」という用語は、小数点が固定された桁数の後に、場合によってはその前に、固定桁数で数値が表される対応する方法を指します。浮動小数点表現では、小数点の配置は、数値の有効数字に対して「浮動」できます。たとえば、小数点配置規則が統一された固定小数点表現は、123.45、1234.56、12345.67などの数値を表すことができますが、浮動小数点表現はさらに1.234567、123456.7、0.00001234567、1234567000000000などを表すこともできます。
番号123.456789を取得
浮動小数点を使用すると、ほとんどすべての数値を非常に正確に表すことができます。修正済みの方が正確ではありませんが、コンピュータの方が簡単です。