是否有任何理由更倾向于使用Math.Floor而不是将其转换为整数类型?
double num;
double floor = Math.Floor(num);
OR
double num;
long floor = (long)num;
答案 0 :(得分:42)
使用Math.Floor:
,在转换为整数类型之间存在一些差异答案 1 :(得分:21)
负值不同:
double num = -1.3;
double floor = Math.Floor(num); // = -2
long cast = (long)num; // = -1
答案 2 :(得分:14)
Math.Floor
是截断的根本不同的操作,因为它以不同的方式处理负数。 Math.Floor(-1.5) == -2.0
,(int)-1.5 == -1
。
答案 3 :(得分:7)
除了其他答案之外,不要忘记在Floor
成功的情况下投射可能会失败:
decimal d = decimal.MaxValue;
decimal f = Math.Floor(d); // succeeds
long l = (long)d; // fails
答案 4 :(得分:1)