Ci sono motivi per cui si preferirebbe utilizzare Math.Floor vs casting in un tipo integrale?Math.Floor vs cast in un tipo integrale in C#
double num;
double floor = Math.Floor(num);
O
double num;
long floor = (long)num;
Ci sono motivi per cui si preferirebbe utilizzare Math.Floor vs casting in un tipo integrale?Math.Floor vs cast in un tipo integrale in C#
double num;
double floor = Math.Floor(num);
O
double num;
long floor = (long)num;
ci sono alcune differenze tra casting per un tipo integrale e utilizzando Math.floor:
Math.Floor
è un'operazione fondamentalmente diverso da troncamento perché gestisce numeri negativi diverso. Math.Floor(-1.5) == -2.0
, mentre (int)-1.5 == -1
.
Si differenzia per i valori negativi:
double num = -1.3;
double floor = Math.Floor(num); // = -2
long cast = (long)num; // = -1
In aggiunta alle altre risposte, non bisogna dimenticare che di fusione potrebbe non riuscire dove Floor
sarebbe successo:
decimal d = decimal.MaxValue;
decimal f = Math.Floor(d); // succeeds
long l = (long)d; // fails
@DanielHilgarth l'ho perso +1. ta – Kaf