四舍五入到最近的C#

时间:2019-10-30 09:51:33

标签: c# rounding

跟随以下提到的链接:

Link1 Link2 Link3 而这样的例子不胜枚举。我认为我不完全了解Math.Round的想法。

让我们说我有以下值[73.59,46.28] ,现在我想将它们都推到下一个5。

使用Math.Round(Value / 5) * 5后,最终结果如下:

  

73.59 => 70

     

46.28 => 45

这适用于应如何使用Math.Round。但是,我正在使用货币,希望它能成为下一个5级货币。因此,所需的结果将是以下内容:

  

73.59 => 75

     

46.28 => 50

我也尝试过玩MidpointRounding.AwayFromZero,但仍然没有得到想要的结果。有人可以为我如何完成这项任务解释或提供指导吗?

谢谢。

1 个答案:

答案 0 :(得分:3)

要始终取整,应使用Math.Ceiling而不是Math.Round

static int RoundUpToMultipleOf5(decimal value) => (int)Math.Ceiling(value / 5) * 5