如何将十进制数四舍五入到指定的位数

本文关键字:十进制数 四舍五入 | 更新日期: 2023-09-27 17:53:49

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

这个答案没有帮助,因为方法:

    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函数-或者只是为您实际使用的值(例如,在您的示例中为10000)创建一个快速查找表。