こんにちは、私はC#でこのコードを持っています:
float n = 2.99499989f;
MessageBox.Show("n = " + n.ToString("f2", CultureInfo.InvariantCulture));
そして、C++ のこのコード:
float n = 2.99499989f;
printf("n = %.2f", n);
最初のものは3.00を出力します。
2 番目の出力は 2.99です。
なぜこれが起こっているのかわかりません。
アップデート:
Objective-C NSLogも試しましたが、出力は2.99です。
すぐに修正する必要があったため、次の方法を使用しました。
float n = 2.99499989f;
float round = (float)Math.Round(n, 2);
MessageBox.Show("round = " + round.ToString(CultureInfo.InvariantCulture));
このコードは2.99を示していますが、倍精度で丸めを計算します。Math.RoundF が見つかりません。