我遇到了一个奇怪的问题,我很确定我错过了什么。
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。我错过了什么吗?
答案 0 :(得分:14)
927/1027
是一个整数表达式,其值为int
,其值为0
。
如果你想要一个十进制计算,那么你应该这样做:
Math.Ceiling(927m/1027m);
m
后缀表示decimal
类型的文字。
但是,由于Math.Ceiling
接收浮点参数作为输入,因此本身会有些奇怪。所以,如果你使用的是Math.Ceiling
,那么我认为你真的想要使用浮点除法。像这样:
Math.Ceiling(927.0/1027.0);