gpt4 book ai didi

c# - 如何四舍五入到最接近的偶数?

转载 作者:IT王子 更新时间:2023-10-29 03:54:42 26 4
gpt4 key购买 nike

我的最后一个目标始终是舍入到最接近的偶数

例如,我想要的结果是 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 但它是奇数,而 11221124更接近)
  • 1123.0 --> 1124(下一个偶数,下一个更高偶数)

我只处理正数

等等。

有一些方法可以做到这一点,还是我应该实现自己的方法?

最佳答案

试试这个(让我们将 Math.RoundMidpointRounding.AwayFromZero 一起使用以获得“下一个偶数值”但缩放 - 2 因子):

double source = 1123.0;

// 1124.0
double result = Math.Round(source / 2, MidpointRounding.AwayFromZero) * 2;

演示:

double[] tests = new double[] {
1.0,
1123.1,
1123.0,
1122.9,
1122.1,
1122.0,
1121.5,
1121.0,
};

string report = string.Join(Environment.NewLine, tests
.Select(item => $"{item,6:F1} -> {Math.Round(item / 2, MidpointRounding.AwayFromZero) * 2}"));

Console.Write(report);

结果:

   1.0 -> 2     // In case of tie, next even value
1123.1 -> 1124
1123.0 -> 1124 // In case of tie, next even value
1122.9 -> 1122
1122.1 -> 1122
1122.0 -> 1122
1121.5 -> 1122
1121.0 -> 1122 // In case of tie, next even value

关于c# - 如何四舍五入到最接近的偶数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52165539/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com