如何将十进制数向上舍入到指定的位数?

How to round UP a decimal number to a specified number of digits?

我需要将数字四舍五入到小数点后 4 位。

This answer没有帮助,因为方法:

    public static decimal RoundUp(this decimal input, int places)
    {
        decimal multiplier = Convert.ToDecimal(Math.Pow(10, Convert.ToDouble(places)));
        return Math.Ceiling(input * multiplier) / multiplier;
    }

会将数字 1.12333 向上舍入为 1.1234(如预期),但 1.123304 将向上舍入为 1.1233,我也需要它为 1.1234。

您发布的方法有效。最有可能的是,您正在使用不正确的数据类型或具有与您想象的不同的值。示例代码:

RoundUp(1.123304M, 4) // 1.1234

注意文字后面的 M - 这表示数字是十进制文字,而不是双精度。然而,无论我做什么,我都无法复制你的结果,所以你很可能根本没有你认为的价值。把一切都保留在小数点,你会没事的。请注意,对于较大的 places 值,您可能需要创建自己的 Math.Pow 函数 - 或者只是快速查找 table 您实际使用的值(例如 10000例如)。