VS2010 コンパイラは、コンパイラの最適化が完全に無効にされていない限り、倍精度で式を計算しているようです ( /Od
)。
static const float a = 1.0f;
if (b < (float)(1.0f + a))...
ここで、1.0f + a
は最初に倍精度で計算され、その後、最適化レベルが 以外の場合は単精度にキャストされ/Od
ます。残念ながら、コンパイラの浮動小数点モデルを に設定すると、計算式でstrict
プリコンパイラを使用できない#defines
ため、これはオプションではありません。
それを適切な方法で処理し、コンパイラに上記のステートメントを単精度で計算させるにはどうすればよいですか?