【问题标题】:How to round up to the higher 10 in C#?如何在 C# 中向上取整到 10?
【发布时间】:2016-05-31 11:34:35
【问题描述】:

我必须在学校编写一个程序,允许用户输入GTIN-8 条形码的 7 位数字并计算校验位。为了计算校验位,七个输入数字乘以 3、1、3、1 等。

for (i = 0; i < 7; i++)
{
    //Convert String to Character
    ch = gtinNum[i];

    //Convert Character to Integer
    number = Convert.ToInt32(ch);
    product = number * weights[i];
    total = total + product;
}//end for loop

之后,总数从最近的前十位中取走。例如,如果总数是 43,那么它将是 50-43。 如何以最简单的方式四舍五入到前十位?

【问题讨论】:

  • 如何使用模数将值降低到 0 到 10 之间,然后简单地从 10 中减去? 10 - (total % 10) ?
  • 您实际上可以查看从下一个最高的十倍数中减去的实际意味着。然后看看是否有内置的操作符可以做同样的事情。
  • 使用纯 int 数学是 total / 10 * 10 + 10

标签: c#


【解决方案1】:

你可以使用Math.Ceiling,你只需要先除以十,然后再乘以10。除以 10.0 以避免整数除法(Math.Ceilingdouble):

int num = 43;
int nextHigherTen = (int)Math.Ceiling(num / 10.0) * 10;

这“四舍五入” 41-50 到 50。如果你想从 40-49 得到它,你可以使用这个:

int nextHigherTen = (int)Math.Ceiling((num + 1) / 10.0) * 10;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-11
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    相关资源
    最近更新 更多