C#decimal取上限2

时间:2012-11-02 11:23:09

标签: c# math

我想将我的十进制值舍入为2.2222到2.23。当我使用round时,

decimal a = Math.Round((decimal)2.222, 2);

当我使用天花板时,会导致3

decimal c = Math.Ceiling((decimal)2.22);

如何获得2.2222到2.23?

4 个答案:

答案 0 :(得分:6)

public static decimal CeilingAfterPoint(this decimal number, int digitsAfterPoint) {
    return Math.Ceiling(number * (decimal)Math.Pow(10, digitsAfterPoint))
           / (decimal)Math.Pow(10, digitsAfterPoint);
}

答案 1 :(得分:1)

decimal c = Math.Ceiling((decimal)2.2222*100)/100;

但这很愚蠢。

答案 2 :(得分:0)

尝试类似

的内容
decimal c = Math.Ceiling((decimal)2.222*100)/100;

但如果您的值为2.22

,则会失败

答案 3 :(得分:-5)

我解决了我的问题..

 string n = "2.2222";
        string[] s = n.Split('.');

        if (s[1].Count() >= 3)
        {
            List<char> z = s[1].ToString().Take(2).ToList();
            int c=Convert.ToInt32(z[0].ToString() + z[1].ToString()) + 1;
          //  int b = Convert.ToInt32(s[1].ElementAt(0).ToString() + s[1].ElementAt(1).ToString()) + 1;
            string output= s[0] + "." + c.ToString();            
        }

现在可以输入任何数字,它将需要2个十进制值并添加1.谢谢。