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

Actualmente mi label4.Text es algo así como: "187.371698712637".Deje solo dos decimales después del punto

lo necesito para mostrar algo como: "187.34"

Sólo dos puestos después del punto. ¿Alguien me puede ayudar?

+1

FYI - Creo que quiso decir que debería mostrar 187.3 * 7 *, no .34 –

Respuesta

90

string.Format es tu amigo.

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

Ha buscado en Google el mismo lugar, pero no le dio crédito. :-) –

+0

Y de nuevo estoy sorprendido por la velocidad de este sitio. Gracias por la ayuda, funciona genial! –

+0

@Steve, sip se ve de esa manera! Al menos tienes más representantes: 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/

edición

Ni idea de por qué se utilizan "Cadena" en lugar de "cadena", pero el resto es correcto.

+0

¡Gracias, ayudó mucho! –

+0

La cadena es igual que la cadena en C#. No estoy seguro de por qué el lenguaje tiene ambos, pero lo hace. –

+0

Cuál usar es una buena pregunta. ¿Qué pasará si la cadena se asigna posteriormente a una clase String2 más rápida? ¿Esa clase tendrá el mismo método de Formato? –

33

Si usted quiere tomar sólo dos numlber después de la coma se puede utilizar la clase de matemáticas que le dan la función de redondeo por ejemplo:

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

Espero que esta ayuda
Saludos

+3

.round() es .Round() – Zafar

+0

Esto es exactamente lo que estoy buscando. –

+0

Tengo valor flotante. Entonces, ¿cómo puedo hacer lo mismo? Intenté el método anterior pero da error de sintaxis. No puedo convertir el tipo float a double –

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

Generalmente, las respuestas son mucho más útiles si incluyen una explicación de lo que el código pretende hacer y por qué eso resuelve el problema sin introducir otros. (Esta publicación fue marcada por al menos un usuario, presumiblemente porque pensaron que una respuesta sin explicación debería ser eliminada.) –

1

Alternativamente , también puede usar el operador compuesto F y luego indicar cuántos espacios decimales desea que aparezcan después del decimal.

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

Se redondeará así que ten cuidado.

Recibí la documentación general. También hay un montón de otros operadores de formato que puede consultar.

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

3

Se puede utilizar esta "String.Format

(" {0: F2} "en Valor de cadena);"

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

Trate Esta

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

Utilizando la propiedad de String

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

Nota: Esto puede ser usado para mostrar solamente.

Usando System.Math

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

interpolación Usar cadena decimalVar:0.00

+0

Quizás haya más que pueda agregar a su pregunta, quizás pueda explicar por qué esto resuelve el problema, algunos antecedentes sobre la interpolación ? – miltonb

+0

en su lugar utilizando String.Format cadena de interpolación permite un formato de cadena más fácil e intuitivo. – emanuel

1

Prueba esto:

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

de salida: 24.57

0

solución simple:

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

//output: 123.45 
Cuestiones relacionadas