c#数学.x.95的圆形问题

本文关键字:问题 数学 | 更新日期: 2023-09-27 18:05:33

刚刚遇到一个奇怪的问题:

Math.Round(113.065, 2, MidpointRounding.ToEven) => 113.06
Math.Round(113.075, 2, MidpointRounding.ToEven) => 113.08
Math.Round(113.085, 2, MidpointRounding.ToEven) => 113.08

但是…

Math.Round(113.095, 2, MidpointRounding.ToEven) => 113.1

为什么会发生这种情况?我希望我的成绩是113.09!这可能吗?

Thx

c#数学.x.95的圆形问题

Math.Round(113.095, 2, MidpointRounding.ToEven) => 113.1

甚至。读入小数点后两位:

113.10

10是偶数部分。右边的零只是让它看起来很奇怪("奇数"在"不偶数"的意义上,不要被"奇数"的意思混淆为"奇怪"),但这就是为什么它会这样显示。

还有,你问题中的例子是不准确的。以下是它们的输出,这将进一步加强您将x.1作为输出的原因:

Math.Round(113.065, 2, MidpointRounding.ToEven) => 113.06
Math.Round(113.075, 2, MidpointRounding.ToEven) => 113.08
Math.Round(113.085, 2, MidpointRounding.ToEven) => 113.08

注意113.075 ToEven的四舍五入结果是113.08,而不是113.07

完整的示例:

Math.Round(113.065, 2, MidpointRounding.ToEven) => 113.06
Math.Round(113.075, 2, MidpointRounding.ToEven) => 113.08
Math.Round(113.085, 2, MidpointRounding.ToEven) => 113.08
Math.Round(113.095, 2, MidpointRounding.ToEven) => 113.1

也可以读作:

Math.Round(113.065, 2, MidpointRounding.ToEven) => 113.06
Math.Round(113.075, 2, MidpointRounding.ToEven) => 113.08
Math.Round(113.085, 2, MidpointRounding.ToEven) => 113.08
Math.Round(113.095, 2, MidpointRounding.ToEven) => 113.10

如果你的问题中的输出真的是你想要得到的…(例如,如果真的是你想要的输出,你只是想知道你必须做什么才能得到输出)

Math.Floor(113.065 * 100) / 100 => 113.06
Math.Floor(113.075 * 100) / 100 => 113.07
Math.Floor(113.085 * 100) / 100 => 113.08
Math.Floor(113.095 * 100) / 100 => 113.09