c# - Math.Ceiling 奇怪的行为

标签 c#

我遇到了一个奇怪的问题,我很确定我遗漏了什么。

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/

相关文章:

c# - C# new 和 override 属性关键字之间的区别

c# - 如何使用 CodeDOM/T4/PostSharp/whatever 使用 c# 自动创建(例如)单例?

c# - 滚动条可见性

c# - 从 mvc Controller 调用远程 Web api

c# - ASP.NET 添加迁移在 IdentityModels.cs 更改上生成空迁移

c# - 身份服务器 4 在生产中注销时返回 404 错误是否有原因

c# - Parallel.ForEach 和聚合异常

c# - 为 NCache Get 实现 Awaitable 异步方法

c# - WebMethod 无法捕获通过 ajax 发送的对象

c# - 将 LINQ 动态查询库与 Dictionary<string, object> 和 .AsQueryable() 结合使用