現代のコンピューターでは、倍精度 (1 符号ビット、11 指数ビット、52 明示仮数ビット) での計算が単精度 (1 符号ビット、8 指数ビット、23 仮数ビット) での計算と同じくらい高速であることは一般的です。したがって、float オブジェクトを読み込み、float オブジェクトを計算して格納すると、コンパイラは float 値を倍精度レジスタに読み込み、倍精度で計算し、単精度の結果を格納する場合があります。これにより、わずかなコストで高い精度が得られるというメリットがあります。結果はより頻繁に「正しく丸められる」場合があります (返される結果は、数学的に正確な結果に最も近い表現可能な値です) が、これは保証されません (まだ丸め誤差があるため、
特に SIMD プログラミングを実行する場合は、倍精度が単精度よりもコストがかかる場合があります。
一般に、高級言語では、コンパイラが浮動小数点式の評価方法を自由に決定できるため、コンパイラは、ベンダーの選択 (またはコンパイラの品質)、最適化、およびターゲット スイッチに応じて、単精度または倍精度を使用する場合があります。コンパイラに渡されたコード、コンパイルされるコードのその他の側面 (たとえば、計算を行うためのマシン レジスタの可用性)、および実用的な目的ではランダムである可能性があるその他の要因。したがって、これは信頼できる動作ではありません。
聞いたことのもう 1 つの意味は、sinf や logf などの単精度関数のライブラリ ルーチンが倍精度で記述されている可能性があるため、完全に記述しなければならない場合よりも目的の結果を簡単に取得できるということです。単精度で。それはよくあることです。ただし、このようなライブラリ ルーチンは、計算中に発生する可能性のあるエラーを分析する専門家によって慎重に作成されているため、ビット数が多いほど良い結果が得られると単純に仮定することはできません。