我遇到了一个奇怪的问题,我很确定我遗漏了什么。
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。我错过了什么吗?
最佳答案
927/1027
是一个整数表达式,其计算结果为 int
,值为 0
。
如果你想要小数计算那么你应该这样做:
Math.Ceiling(927m/1027m);
m
后缀表示decimal
类型的文字。
但这本身就有些奇怪,因为 Math.Ceiling
接收一个浮点参数作为输入。所以,如果您正在使用 Math.Ceiling
,那么我认为您确实想要使用浮点除法。像这样:
Math.Ceiling(927.0/1027.0);
关于c# - Math.Ceiling 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13648825/