2009-08-18 22 views
35
public void LoadAveragePingTime() 
    { 
     try 
     { 
      PingReply pingReply = pingClass.Send("logon.chronic-domination.com"); 
      double AveragePing = (pingReply.RoundtripTime/1.75); 

      label4.Text = (AveragePing.ToString() + "ms");     
     } 
     catch (Exception) 
     { 
      label4.Text = "Server is currently offline."; 
     } 
    } 

Actuellement, mon label4.Text est quelque chose comme: "187.371698712637".Ne laisser que deux décimales après le point

j'ai besoin de montrer quelque chose comme: « 187,34 »

Seuls deux postes après le ministère des Transports. Est-ce que quelqu'un peut m'aider?

+1

FYI - Je pense que vous vouliez dire qu'il devrait afficher 187.3 * 7 *, pas .34 –

Répondre

90

string.Format est votre ami.

String.Format("{0:0.00}", 123.4567);  // "123.46" 
+2

Vous avez googlé le même endroit, mais ne lui donnait pas de crédit. :-) –

+0

Et encore une fois je suis étonné de la vitesse de ce site. Merci pour l'aide, ça marche super! –

+0

@Steve, oui ça ressemble! Au moins, vous avez plus de rep: P –

30
// just two decimal places 
String.Format("{0:0.00}", 123.4567);  // "123.46" 
String.Format("{0:0.00}", 123.4);   // "123.40" 
String.Format("{0:0.00}", 123.0);   // "123.00" 

http://www.csharp-examples.net/string-format-double/

modifier

Aucune idée pourquoi ils ont utilisé "String" au lieu de "string", mais le reste est correct.

+0

Merci, beaucoup aidé! –

+0

La chaîne est la même que la chaîne en C#. Je ne sais pas pourquoi la langue a les deux, mais c'est le cas. –

+0

Lequel utiliser est une bonne question. Que se passera-t-il si la chaîne est ensuite mappée à une classe String2 plus rapide? Cette classe aura-t-elle la même méthode de formatage? –

33

Si vous voulez prendre seulement deux numlber après la virgule, vous pouvez utiliser la classe Math qui vous donnent la fonction tour par exemple:

float value = 92.197354542; 
value = System.Math.Round(value,2);   // value = 92.20; 

Hope this Aide
Vive

+3

.round() est .Round() – Zafar

+0

C'est exactement ce que je cherche. –

+0

J'ai une valeur flottante. alors comment puis-je faire la même chose. J'ai essayé la méthode ci-dessus mais elle donne une erreur de syntaxe ne peut pas convertir le type float en double –

4
double amount = 31.245678; 
amount = Math.Floor(amount * 100)/100; 
+1

Généralement, les réponses sont beaucoup plus utiles si elles incluent une explication de ce que le code est destiné à faire et pourquoi cela résout le problème sans en présenter d'autres. (Ce message a été signalé par au moins un utilisateur, vraisemblablement parce qu'il pensait qu'une réponse sans explication devrait être supprimée.) –

1

Alternativement , vous pouvez également utiliser l'opérateur composite F, puis indiquer le nombre de points décimaux que vous souhaitez afficher après la virgule.

string.Format("{0:F2}", 123.456789);  //123.46 
string.Format("{0:F3}", 123.456789);  //123.457 
string.Format("{0:F4}", 123.456789);  //123.4568 

Il sera arrondi, soyez conscient de cela.

J'ai trouvé la documentation générale. Il y a aussi une tonne d'autres opérateurs de formatage que vous pouvez consulter.

Source: https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx

3

Vous pouvez utiliser ce

"String.Format (" {0: F2} "Valeur de chaîne);"

// give you only the two digit after Dot, excat two digit. 
1

Essayez cette

public static string PreciseDecimalValue(double Value, int DigitsAfterDecimal) 
     { 
      string PreciseDecimalFormat = "{0:0.0}"; 

      for (int count = 2; count <= DigitsAfterDecimal; count++) 
      { 
       PreciseDecimalFormat = PreciseDecimalFormat.Insert(PreciseDecimalFormat.LastIndexOf('}'), "0"); 
      } 
      return String.Format(PreciseDecimalFormat, Value); 
     } 
1

En utilisant la propriété de String

double value = 123.456789; 
String.Format("{0:0.00}", value); 

Note: Ceci peut être utilisé pour afficher uniquement.

En utilisant System.Math

double value = 123.456789; 
System.Math.Round(value, 2); 
0

Utiliser la chaîne interpolation decimalVar:0.00

+0

Peut-être que vous pourriez ajouter quelque chose à votre question, peut-être pourriez-vous expliquer pourquoi cela résout le problème. ? – miltonb

+0

au lieu d'utiliser String.Format string interpolation permet une mise en forme de chaîne plus facile et plus intuitive. – emanuel

1

Essayez ceci:

double result = Math.Round(24.576938593,2); 
MessageBox.Show(result.ToString()); 

Sortie: 24,57

0

solution simple:

double totalCost = 123.45678; 
totalCost = Convert.ToDouble(String.Format("{0:0.00}", totalCost)); 

//output: 123.45