Czy są jakieś powody, dla których wolałbyś używać Math.Floor vs casting do typu integralnego?Math.Floor vs odlewane do typu integralnego w C#
double num;
double floor = Math.Floor(num);
lub
double num;
long floor = (long)num;
Czy są jakieś powody, dla których wolałbyś używać Math.Floor vs casting do typu integralnego?Math.Floor vs odlewane do typu integralnego w C#
double num;
double floor = Math.Floor(num);
lub
double num;
long floor = (long)num;
Istnieją pewne różnice między odlewania do integralnego rodzaju i obsługiwanie Math.floor:
Math.Floor
jest zasadniczo różny od operacji obcinanie, ponieważ uchwyty ujemnych wartości inaczej. Math.Floor(-1.5) == -2.0
, natomiast (int)-1.5 == -1
.
Różni dla wartości ujemnych:
double num = -1.3;
double floor = Math.Floor(num); // = -2
long cast = (long)num; // = -1
W uzupełnieniu do innych odpowiedzi, nie należy zapominać, że odlew może zawieść gdzie Floor
uda:
decimal d = decimal.MaxValue;
decimal f = Math.Floor(d); // succeeds
long l = (long)d; // fails
@DanielHilgarth brakowało +1. ta – Kaf