Math.Round返回一个向上舍入的奇数值,但向下舍入为偶数

Kuz*_*zon 4 c# math rounding

我试图用数学圆找到一个浮点数,我发现了以下内容

0.5 --> 0
1.5 --> 2
2.5 --> 2
3.5 --> 4
Run Code Online (Sandbox Code Playgroud)

等等.我相信这是由于浮点错误,但不太确定如何.我怎样才能解决这个问题呢?

Son*_*nül 9

文件 ;

最接近a的整数.如果a的小数分量在两个整数之间,其中一个是偶数而另一个是奇数,则返回偶数.请注意,此方法返回Double而不是整数类型.

Math.Round方法有一些重载这需要MidpointRounding作为如果它是中间两个数字之间可以指定舍入值的参数.

AwayFromZero 
Run Code Online (Sandbox Code Playgroud)

当一个数字介于另外两个数字之间时,它会向最接近零的数字四舍五入.

ToEven
Run Code Online (Sandbox Code Playgroud)

当一个数字在另外两个数字之间时,它会向最接近的偶数舍入.

  • 我想知道当它在两个整数之间发生时会发生什么,这两个整数都是......冗余FTW! (3认同)

Chr*_*tos 6

你可以使用这个,克服你所说的:

Math.Round(value, MidpointRounding.AwayFromZero);
Run Code Online (Sandbox Code Playgroud)

使用以上:

当一个数字介于另外两个数字之间时,它会向最接近零的数字四舍五入.

有关MidpointRounding枚举的进一步文档,请查看此处.