2009-12-04 4 views
1

je dois formater valeur flottante et je ne ai besoin de 2 chiffres après le point et devrait être la valeur arrondieà flotteur Format variable

float first = 7, Second = 3,result; 
result = first/Second; // result contain 2.33333325 since I need like 2.33 

Merci

Répondre

9
?5/3 
1.6666666666666667 
?String.Format("{0:0.00}", 5/3) 
"1,67" 
?System.Math.Round(5/3, 2) 
1.67 

?(5.0/3).ToString("0.00") 
"1,67" 
?(5/3).ToString("0.00") 
"1,00" 
?(5.0/3).ToString("E") //Exponential 
"1,666667E+000" 
?(5.0/3).ToString("F") //Fixed-point 
"1,67" 
?(5.0/3).ToString("N") //Number 
"1,67" 
?(5.0/3).ToString("C") //Currency 
"1,67 €" 
?(5.0/3).ToString("G") //General 
"1,66666666666667" 
?(5.0/3).ToString("R") //Round-trip 
"1,6666666666666667" 
?(5.0/3).ToString("this is it .") 
"this is it 2" 
?(5.0/3).ToString("this is it .0") 
"this is it 1,7" 
?(5.0/3).ToString("this is it .0##") 
"this is it 1,667" 
?(5.0/3).ToString("this is it #####") 
"this is it 2" 
?(5.0/3).ToString("this is it .###") 
"this is it 1,667" 
5

Vous pouvez arrondir le numéro à l'aide Math.Round ou préciser comment il devrait apparaître en sortie en utilisant des spécificateurs de format. Si vous souhaitez effectuer d'autres calculs sur la valeur, vous devez décider si vous avez besoin de la valeur arrondie ou de la valeur la plus précise.

Pour les spécificateurs de format, vous pouvez utiliser {0: f} dans ce cas. Voir ce post pour des exemples http://blog.stevex.net/string-formatting-in-csharp/

Console.WriteLine(String.Format("{0:f}", result)); 

Comme Ben souligne ToString accepte les mêmes spécificateurs, donc si le nombre ne fait pas partie d'un texte que vous pouvez juste faire.

result.ToString("f"); 
+2

N'utilisez-vous pas simplement 'result.ToString (" f ");' pour utiliser les chaînes de format numérique standard? http://msdn.microsoft.com/fr-fr/library/dwhawy9k.aspx –

+0

Bon point. J'utilise habituellement String.Format pour inclure d'autres textes/nombres. J'ai ajouté votre commentaire à ma réponse. Merci. –

2

Comme le dit Brian, flotteurs sont stockés sous forme de données simplement binaires - ils ne contiennent pas de format. Vous voudrez peut-être vous en préoccuper uniquement lorsque vous formaterez le nombre en tant que chaîne. Toutefois, si vous êtes intéressé par des opérations spécifiques impliquant des points décimaux, vous pouvez commencer par utiliser decimal au lieu de float. Avec quel genre de chiffres travaillez-vous réellement ici?

En particulier, si vous effectuez un certain nombre d'opérations et souhaitez arrondir dans le numéro lui-même alors decimal est susceptible d'être un meilleur pari. Voir mes articles sur binary floating point et decimal floating point pour plus d'informations.