首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C#中将Math.Floor与强制转换为整型

在C#中将Math.Floor与强制转换为整型
EN

Stack Overflow用户
提问于 2012-03-21 18:45:28
回答 4查看 6K关注 0票数 21

有没有什么原因更倾向于使用Math.Floor而不是强制转换为整型?

代码语言:javascript
复制
double num;
double floor = Math.Floor(num);

代码语言:javascript
复制
double num;
long floor = (long)num;
EN

回答 4

Stack Overflow用户

发布于 2012-03-21 18:49:51

负值的情况有所不同:

代码语言:javascript
复制
double num = -1.3;
double floor = Math.Floor(num); // = -2
long cast = (long)num; // = -1
票数 25
EN

Stack Overflow用户

发布于 2012-03-21 18:48:38

Math.Floor从根本上不同于截断操作,因为它以不同的方式处理负数。Math.Floor(-1.5) == -2.0,而(int)-1.5 == -1.

票数 17
EN

Stack Overflow用户

发布于 2012-03-21 18:51:57

除了其他答案之外,不要忘记,在Floor成功的地方,强制转换可能会失败:

代码语言:javascript
复制
decimal d = decimal.MaxValue;

decimal f = Math.Floor(d);    // succeeds
long l = (long)d;             // fails
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9802978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档