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.075ToEven
四舍五入将导致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