4

我有一个奇怪的问题,我很确定我错过了一些东西。

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

927/1027 = 0.902 ... 所以这应该返回 1 对吗?

相反,我得到 0。

但是当我直接将值输入到天花板时,

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

我按预期得到 1。我错过了什么吗?

4

1 回答 1

14

927/1027是一个整数表达式,其计算结果为intwith value 0

如果你想要一个小数计算,那么你应该这样做:

Math.Ceiling(927m/1027m);

m后缀表示类型为 的文字decimal

但这本身会有些奇怪,因为Math.Ceiling接收浮点参数作为输入。所以,如果你正在使用,Math.Ceiling那么我认为你真的想使用浮点除法。像这样:

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