2009-08-18 24 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."; 
     } 
    } 

Attualmente il mio label4.Text ha qualcosa del tipo: "187.371698712637".Lasciare solo due cifre decimali dopo il punto

ho bisogno di dimostrare qualcosa come: "187.34"

Solo due messaggi dopo il punto. Qualcuno mi può aiutare?

+1

FYI - Penso che intendevi visualizzare 187,3 * 7 *, non .34 –

risposta

90

string.Format è tuo amico.

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

Tu hai cercato su Google lo stesso posto, ma non gli hai dato credito. :-) –

+0

E di nuovo mi stupisco della velocità di questo sito. Grazie per l'aiuto, funziona alla grande! –

+0

@Steve, sembra così! Almeno hai più rappresentanti: 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/

modificare

Nessuna idea perché hanno usato "String" invece di "string", ma il resto è corretto.

+0

Grazie, ha aiutato molto! –

+0

La stringa è uguale alla stringa in C#. Non sono sicuro del perché la lingua abbia entrambi, ma lo è. –

+0

Quale usare è una buona domanda. Cosa succederà se la stringa viene successivamente mappata su una classe String2 più veloce? Questa classe avrà lo stesso metodo di formattazione? –

33

Se si vuole prendere solo due numlber dopo virgola è possibile utilizzare la classe di matematica che ti danno la funzione di turno ad esempio:

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

Sperare questo aiuto
Acclamazioni

+3

.round() is .Round() – Zafar

+0

Questo è esattamente quello che sto cercando. –

+0

Ho un valore float. quindi, come posso fare la stessa cosa Ho provato sopra il metodo ma l'errore di sintassi non può convertire il tipo float in double –

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

In genere, le risposte sono molto più utili se includono una spiegazione di cosa il codice è destinato a fare e perché risolvono il problema senza introdurre altri. (Questo post è stato contrassegnato da almeno un utente, presumibilmente perché pensava che una risposta senza spiegazione dovesse essere eliminata.) –

1

alternativa , puoi anche usare l'operatore F composito, indicando quanti punti decimali vuoi visualizzare dopo il decimale.

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

Arrotolerà quindi sii consapevole di quello.

Ho trovato la documentazione generale. Ci sono anche un sacco di altri operatori di formattazione che puoi controllare.

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

3

È possibile utilizzare questo

"String.Format (" {0: F2} "Valore stringa);"

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

Try This

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

Usando la proprietà di String

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

Nota: questo può essere utilizzato per visualizzare solo.

Utilizzando System.Math

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

Usa stringa di interpolazione decimalVar:0.00

+0

Forse c'è più che potresti aggiungere alla tua domanda, forse puoi spiegare perché questo risolve il problema, qualche background sull'interpolazione ? – miltonb

+0

invece di utilizzare String.Format l'interpolazione della stringa consente una formattazione delle stringhe più semplice e intuitiva. – emanuel

1

Prova questa:

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

uscita: 24.57

0

Soluzione semplice:

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

//output: 123.45 
Problemi correlati