C#中的舍入整数

时间:2018-09-24 08:42:04

标签: c# .net numbers int rounding

我已经搜索了这个问题了几个小时,但没有找到答案,所以我问它:

我正在寻找一种方法或某种方法将const utc1 = Date.UTC(date_to.getFullYear(), date_to.getMonth(), date_to.getDate()); 舍入为25,599,999或将25,000,000舍入为25,599,999

30,000,000

或四舍五入:

 int num1 = 25599999;
 Console.WriteLine(RoundDown(num1, 6 /* This is the places (numbers from end that must be 0) */)) // Should return 25,000,000;

注意:我不是在寻找一种舍入十进制数字的方法。

4 个答案:

答案 0 :(得分:8)

int RoundDown(int num, int digitsToRound)
{
    double tmp = num / Math.Pow(10, digitsToRound);

    return (int)(Math.Floor(tmp) * Math.Pow(10, digitsToRound));
}

int RoundUp(int num, int digitsToRound)
{
    double tmp = num / Math.Pow(10, (digitsToRound + 1)) + 1;

    return (int)(Math.Floor(tmp) * Math.Pow(10, (digitsToRound + 1)));
}

答案 1 :(得分:1)

用于对预期的尾随零计数进行四舍五入的方法:

    public static int RoundUp(int number, int trailingZeroes)
    {
        var divider = (int)Math.Pow(10, trailingZeroes);
        return (number / divider + (number % divider > 0 ? 1 : 0)) * divider;
    }

    public static int RoundDown(int number, int trailingZeroes)
    {
        var divider = (int)Math.Pow(10, trailingZeroes);
        return number / divider * divider;
    }

这将返回:

Console.WriteLine(RoundUp(25599999, 6));

结果将为2600万。如果希望将其舍入为3000000,则需要使用7个尾随零来调用它,因为在本示例中,您将舍入为7个尾随零:

Console.WriteLine(RoundUp(25599999, 7));

答案 2 :(得分:0)

看看:

Math.Round

用法示例:Rounding a Floating-Point Value

可能可以转换为非浮点值。 也许对您有帮助?

答案 3 :(得分:-1)

您可以尝试以下功能:

scp -i rsa_id file1 myuser@server1

这仅适用于数百万个数字(例如2000000、25252325等)。

希望有帮助!