4

2.2222のような10進値を2.23に丸めたい。ラウンドを使うと、

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

天井を使うと3が発生します

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

2.2222から2.23を取得するにはどうすればよいですか?

4

4 に答える 4

8
public static decimal CeilingAfterPoint(this decimal number, int digitsAfterPoint) {
    return Math.Ceiling(number * (decimal)Math.Pow(10, digitsAfterPoint))
           / (decimal)Math.Pow(10, digitsAfterPoint);
}
于 2012-11-02T11:29:29.177 に答える
1
decimal c = Math.Ceiling((decimal)2.2222*100)/100;

しかし、それは愚かです。

于 2012-11-02T11:27:53.847 に答える
0

次のようなものを試してください

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

しかし、あなたの価値が2.22

于 2012-11-02T11:31:07.903 に答える
-7

私は自分の問題を解決しました。

 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を加算します。ありがとうございます。

于 2012-11-02T16:56:13.820 に答える