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

时间:2016-06-30 10:58:04

标签: c# .net math rounding

我需要将数字四舍五入到小数点后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。

1 个答案:

答案 0 :(得分:1)

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

RoundUp(1.123304M, 4) // 1.1234

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