C#数学。以x.95为圆题

C#数学。以x.95为圆题,c#,C#,刚刚遇到一个奇怪的问题: 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) =&

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

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

这是甚至。请用小数点后两位读出:

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.Round(113.075,2,middpointrounding.ToEven)=>**113.08**
@Snappawapa:这不是问题所在。
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