C# 将数字四舍五入为 double

时间:2021-02-24 19:00:02

标签: c# rounding

我希望将双精度舍入到小数点右侧或左侧的任意数字。

Math.Round 仅适用于小数点右侧的数字,我需要能够四舍五入到最接近的 10s、100s、1000s、...

所需输入/输出的示例:

Round(1234.56789,  0) == 1235
Round(1234.56789, -3) == 1234.568
Round(1234.56789,  3) == 1000

这个问题不同于Round double in two decimal places in C#? 因为我需要将值四舍五入到小数点左侧的位置,例如 1,2345,000 四舍五入到最接近的 10,000

1 个答案:

答案 0 :(得分:0)

如果我们将 10 取数字位置的幂,我们可以将双精度四舍五入到任意精度

public double RoundToDigit(double i, int digitPosition)
{
    double precision = Math.Pow(10, digitPosition);

    double result = Math.Round(i / precision, 0) * precision;

    return result;
}