【问题标题】:C# how to always round down to nearest 50C#如何总是向下舍入到最接近的50
【发布时间】:2013-02-08 07:19:02
【问题描述】:

我已经搜索了 C# 舍入,但无法找到当前问题的答案。

我想要做的总是向下舍入到最接近的 50。我想要向下舍入的所有值都是十进制的。

所以 635.25 将是 600。

298.42 将是 250。

149.56 将是 100。

我查看了 math.round,但我将如何使用它,所以它总是向下舍入到最接近的 50 而从不向上?

【问题讨论】:

  • 这是一个非常受欢迎的问题。一个例子:stackoverflow.com/questions/2826262/…
  • 这更像是一道数学题而不是编程题
  • @AdrianCarneiro:鉴于编程语言处理这个问题的方式不同(可能不是这个例子,但在存在负数的情况下),我不得不不同意。
  • 我一直在寻找可以上下舍入而不只是向下舍入的那些,错过了,谢谢
  • @leppie 同意。这就是为什么我说它“更像是一个数学问题”,而不是“绝对是一个数学问题”

标签: c# function math decimal rounding


【解决方案1】:

Guffa 的另一种方式:

(((int) value) / 50) * 50

【讨论】:

  • 这与 Guffa 的回答不同。负数在这里四舍五入。
  • @Jens:给定正数,它是相同的:)
【解决方案2】:

将该值除以 50,向下舍入到最接近的整数,然后再次乘以 50:

double n = Math.Floor(n / 50.0) * 50.0;

【讨论】:

  • 没有注意到从不向上取整+1 :)
  • 哦,好吧,添加了一个替代方案;)如果您进行微优化,可能会更便宜;p
【解决方案3】:

使用模数:

var roundedDownToClosestFifty = value - (value % 50);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    • 2020-07-01
    • 2016-02-26
    • 1970-01-01
    相关资源
    最近更新 更多