您好,我在 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.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。