[解決済み] CとC++のlong doubleとdoubleの違い [重複]について
質問
重複の可能性があります。
long double vs double
私はプログラミング初心者なのですが、CとC++のlong doubleとdoubleの違いがわかりません。ググってみたのですが、理解できず混乱してしまいました。どなたか助けていただけませんか?
どのように解決するのですか?
C++規格の§3.9.1 ¶8を引用します。
<ブロッククオート浮動小数点の型にはfloat、double、long doubleの3つがあります。double型はfloat型と少なくとも同じ精度を持ち、long double型はdouble型と少なくとも同じ精度を持ちます。float型の値集合はdouble型の値集合の部分集合であり、double型の値集合はlong double型の値集合の部分集合である。浮動小数点型の値の表現は,実装によって決定される。積分型と浮動小数点型は,まとめて算術型と呼ばれる。標準テンプレート std::numeric_limits (18.3) の特殊化により、実装における各演算型の最大値および最小値を指定するものとする。
ということである。
double
は、その表現に、少なくとも
float
と
long double
と同じぐらい
double
. この余分なメモリは、より正確な数値の表現に使われるのです。
x86システムの場合。
float
は通常4バイトの長さで、約3×10³⁸から約1.4×10-⁴⁵までの数値を格納することが可能です。これは、IEEE754
単精度数
で、小数点以下7桁程度の小数を格納する。
x86システムにも搭載。
double
は8バイト長で、IEEE754の数値を格納することができます。
倍精度のフォーマット
これは、より大きな範囲を持ち、小数点以下15桁程度の精度で数値を格納するものである。他のいくつかのプラットフォームでは
double
は8バイト長でない場合があり、実際には単精度の
float
.
規格では、以下の事項のみが要求されています。
long double
と同等以上の精度が必要です。
double
そのため、いくつかのコンパイラは単に
long double
と同じであるかのようです。
double
. しかし、ほとんどの x86 チップでは、10 バイトの
拡張精度形式
80ビットの数値は、CPUの浮動小数点演算ユニットで利用でき、64ビットよりもさらに精度の高い
double
であり、小数点以下約21桁の精度を持つ。
一部のコンパイラは、代わりに16バイト(128ビット)のIEEE754をサポートしています。 4倍精度の数値形式 より正確な表現とより大きな範囲を持つ。
関連
-
[解決済み】識別子 "string "は未定義?
-
[解決済み】Visual C++で "Debug Assertion failed "の原因となる行を見つける。
-
[解決済み】1つ以上の多重定義されたシンボルが見つかる
-
[解決済み] to_string は std のメンバーではない、と g++ が言っている (mingw)
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] C++11の'typedef'と'using'の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++のGetlineの問題(オーバーロードされた関数 "getline "のインスタンスがない
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み】関数名の前に期待されるイニシャライザー
-
[解決済み】「corrupted size vs. prev_size」glibc エラーを理解する。
-
[解決済み】デバッグアサーションに失敗しました。C++のベクトル添え字が範囲外
-
[解決済み】c++でstd::vectorを返すための効率的な方法
-
[解決済み】「std::operator」で「operator<<」にマッチするものがない。
-
[解決済み] [Solved] インクルードファイルが開けません。'stdio.h' - Visual Studio Community 2017 - C++ Error
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】なぜ、サイズ8の初期化されていない値を使用するのでしょうか?