
比較表:
比較基準 | 浮く | ダブル |
---|---|---|
精度 | 単精度です。 | 倍精度。 |
ビット | 32ビット | 64ビット |
バイト数 | 4バイト | 8バイト |
おおよその範囲 | 1.4e-045から3.4e + 038 | 4.9e-324から1.8e + 308 |
ビット表現 | 1ビットは符号ビットを表します。 8ビットは指数を表します。 23ビットは仮数を表します。 | 1ビットは符号ビットを表します。 11ビットは指数を表します。 52ビットは仮数を表します。 |
正確さ | あまり正確ではありません。 | より正確な。 |
フロートの定義
データ型floatは、浮動小数点型の1つです。 データ型floatは、float型の変数用に32ビットの記憶領域(4バイトに相当)を持ちます。 データ型floatは単精度を指定します。 floatでの32ビットの表現は、1ビットが符号ビットとして表現され、8ビットが指数として表現され、23ビットが仮数として表現されると説明できます。 float型の最大範囲は1.4e-045から3.4e + 038です。 倍精度浮動小数点型と比較した場合、浮動小数点型は数学的計算中は精度が落ちます。 例を使ってfloatを理解しましょう。
#include #include int main(){float num1 = sqrt(64.23)cout << num1; //出力8.00060
上記のコードのように、float変数num1には関数sqrt()によって値が代入されていることがわかります。この値は、この関数に渡される値の平方根を返します。 num1の値が表示されたときに正確な値に近いことがわかりますが、正確ではありません。 次の例を見てみましょう。データ型としてdoubleを使用して同じプログラムを実行した場合。
二重の定義
doubleは2番目の種類の浮動小数点データ型です。 doubleデータ型は、double型の変数に対して64ビット(8バイトに相当)の記憶域を持ちます。 サイズはfloatの2倍なので倍精度を指定します。 double型の64ビット表現は、1ビットが符号ビットを表し、11ビットが指数を表し、残りの52ビットが仮数を表すと説明できます。 floatとdoubleの間で最も一般的に使用されるデータ型はdoubleです。 double型は、数学的計算中、そして完全な精度が必要なときに使用されます。 数学関数sin()、cos()、およびsqrt()は常にdouble値を返します。 例を使用して、データ型doubleの精度を理解しましょう。
#include #include int main(){double num1 = sqrt(64.23)cout << num1; //出力8.0143621
floatを説明する例で得られる出力は、doubleを説明する例で得られる出力とは異なることがわかります。 だから、これから、doubleから得られる結果はfloatよりも正確であると言えます。
フロートとダブルの主な違い
- データ型floatは単精度を指定します。これは、doubleと比較した場合の精度が低いことを意味しますが、doubleはfloatの2倍であるため倍精度を指定します。
- float型の変数は32ビットの記憶域を持ちますが、double型の変数は64ビットの記憶域を持ちます。これにより、double型はfloatに比べて記憶域が大きくなります。
- float型の値は1.4e-045から3.4e + 038の範囲ですが、double型の値は4.9e-324から1.8e + 308の範囲です。
- float値のビット表現は、1ビットのfloatがsingビットに、8ビットが指数部に、23ビットが仮数部の格納に使用されることに似ています。 一方、double値は、1ビットがシングビットに、11ビットが指数に、52ビットが仮数の格納に使用されることに似ています。
- 倍精度浮動小数点と比較すると、数学的な計算で倍精度が使用されているため、精度が劣ります。
結論:
まあ、あなたはそれがほとんどの場合私たちの主なモトである正確さを提供するのであなたは一般的にdoubleを使わなければなりません。