C++ には float や double よりも正確なデータ型がありますか? それとも、計算がオフになるという事実に落ち着く必要がありますか?
編集: リスター氏が指摘したように、私の質問は精度に関するものです。2 つの浮動小数点数/倍精度浮動小数点数を一緒に追加すると、手で行う計算と比較して半分の時間で数値がずれてしまうと、少しイライラします。
C++ には float や double よりも正確なデータ型がありますか? それとも、計算がオフになるという事実に落ち着く必要がありますか?
編集: リスター氏が指摘したように、私の質問は精度に関するものです。2 つの浮動小数点数/倍精度浮動小数点数を一緒に追加すると、手で行う計算と比較して半分の時間で数値がずれてしまうと、少しイライラします。
一部のコンパイラや一部のアーキテクチャでは、「long double」を使用すると、double よりも高い精度が得られます。x86 プラットフォームを使用している場合、x87 FPU には「拡張」80 ビット浮動小数点形式があります。「long double」型を使用すると、Gcc および Borland コンパイラは 80 ビットの float 値を提供します。Visual Studio はこれをサポートしていないことに注意してください(MSVC でサポートされている最大値は倍精度、64 ビットです)。
4 倍精度の 128 ビット浮動小数点を実装するためのソフトウェア手法である" double double "と呼ばれるものがあります。それを実装するライブラリを見つけることができます。
また、任意精度演算のライブラリを調査することもできます。
一部の計算では、64 ビット浮動小数点値よりも 64 ビット整数の方が適しています。
しかし、質問が一般的なプラットフォーム上の現在の C++ コンパイラの組み込み型に関するものである場合、答えは double (64 ビット浮動小数点) に制限されており、64 ビット プラットフォームでは 64 ビット int があるということです。x86 に固執し、適切なコンパイラを使用できる場合は、long double (80 ビット拡張精度) も使用できます。
この質問に興味があるかもしれません: