2010-05-12 6 views
3
double d = toDateTime.SelectedDateTime.Subtract(
       servicefromDateTime.SelectedDateTime).TotalHours;    
string s = String.Format("{0:0}",d); 

Mais le String.Format arrondit la valeur: si d est le 22,91 String.Format donne le résultat arrondi de 23. Je ne veux pas arrondir. Par exemple, si d est 22.1222222, alors je veux 22. si d est 22.999999, alors je veux 22.StringFormat Double sans arrondir

Comment puis-je y parvenir?

Répondre

5

Vous pouvez utiliser Math.Truncate

double d = toDateTime.SelectedDateTime.Subtract(servicefromDateTime.SelectedDateTime).TotalHours; 

string s = String.Format("{0:0}", Math.Truncate(d)); 
+0

Je ne pouvais pas dire quel comportement l'OP voulait - mais l'un de Math.Floor ou Math.Truncate fera en effet ce qu'il veut. – Jamiec

2

Si vous lancez le double en int/long, il enlèvera tout composant décimal, ce qui vous donnera un «floor» ou un arrondi au double.

2

Ensuite, vous devez Math.Floor

double d = toDateTime.SelectedDateTime.Subtract(servicefromDateTime.SelectedDateTime).TotalHours; 

string s = String.Format("{0:0}",Math.Floor(d)); 
+1

Floor ne fonctionnerait pas pour les nombres négatifs. Math.Floor (-7.1) renvoie -8. –