4

私は奇妙な問題を抱えており、何かが欠けていると確信しています。

decimal pages = Math.Ceiling((decimal)(927/1027));
MessageBox.Show(pages.ToString());

927/1027 = 0.902.....だから、これは 1 を返すはずですよね?

代わりに、0 を取得します。

しかし、Ceilingに値を直接入力すると、

decimal pages = Math.Ceiling((decimal)(0.902));
MessageBox.Show(pages.ToString());

予想通り1点取れました。何か不足していますか?

4

1 に答える 1

14

927/1027intwith valueに評価される整数式です0

小数の計算が必要な場合は、次のようにする必要があります。

Math.Ceiling(927m/1027m);

接尾辞は、 typeのmリテラルを示しますdecimal

しかし、Math.Ceiling入力として浮動小数点パラメーターを受け取るので、それ自体はやや奇妙です。ということで、もし使っMath.Ceilingているならどうしても浮動小数点除算が使いたくなるのだと思います。このような:

Math.Ceiling(927.0/1027.0);
于 2012-11-30T16:11:40.237 に答える