【发布时间】:2019-02-09 10:37:37
【问题描述】:
我的最后一个目标总是四舍五入到最近的偶数。
例如,我想要的数字 1122.5196 作为结果 1122。我试过这个选项:
Math.Round(1122.5196d, 0, MidpointRounding.ToEven); // result 1123
Math.Round(1122.5196d, 0, MidpointRounding.AwayFromZero); // result 1123
最后,我想得到的总是最近的偶数。例如:
1122.51 --> 1122-
1122.9 --> 1122(因为最接近的 int 是1123但它是奇数,而1122比1124更接近) -
1123.0 --> 1124(下一个偶数,下一个更高偶数)
我只使用正数。
等等。
有一些方法可以做到这一点,或者我应该实现自己的方法?
【问题讨论】:
-
您希望输入 1123.0 的结果是什么? (Math.Round 总是会为此返回 1123.0...)
-
double result = Math.Round(source / 2) * 2; -
如果你只想截断浮点数,使用
Math.Truncate(number) -
他并没有试图截断任何东西。他试图将数字四舍五入到最接近的偶数
-
在1123.0 1124的情况下,下一个偶数值。
标签: c# algorithm math integer rounding