Visual Studio 2008では、たとえばこれがあります
float a1 = 1.2f/1.8f;
float a2 = 450.f;
float a3 = a1*a2;
float res1 = 350.f - a3;
float res2 = 350.f - a1*a2;
res1 と res2 の値は異なる結果を示します。これは、a1*a2 (in res2) がより高い精度で実行され、a3 に保存した値とは異なるためです。
Xcodeで
同じセットがある場合、 res1 と res 2 は同じ結果になります
Xcode で Visual Studio と同じ結果を得るにはどうすればよいですか? また、Visual Studio で Xcode と同じ結果を得るにはどうすればよいでしょうか?
ありがとうございました
編集:ビジュアルスタジオで同じ結果を得るために私が見つけたものは次のとおりです:
float res1 = 350.f - a3;
float res2 = 350.f - (float)(a1*a2);
したがって、(float) なしで a1*a2 が高精度で実行され、350.f から減算され、結果が float に「スケーリング」されることを意味します。(float) を使用すると、a1*a2 は高精度で実行され、最初に float にスケーリングされ、次に高精度で 350.f から減算されてから float に「スケーリング」されます。