¿Cómo puedo dar formato a un valor decimal a una cadena con un solo dígito después de la coma/punto y espacios para los valores de menos de 100?

Por ejemplo, un valor decimal de 12.3456 debe ser de salida como " 12.3" con un solo espacio. 10.011 sería " 10.0". 123.123 es "123.1"

Estoy buscando una solución, que funciona con el estándar/personalizado cadena de formato, es decir,

decimal value = 12.345456;
Console.Write("{0:magic}", value); //'magic' would be a fancy pattern.
InformationsquelleAutor Jakob Gade | 2011-11-28

4 Comentarios

  1. 87

    Este patrón {0,5:###.0} debería funcionar:

    string.Format("{0,5:###.0}", 12.3456) //Output  " 12.3"
    string.Format("{0,5:###.0}", 10.011)  //Output  " 10.0" 
    string.Format("{0,5:###.0}", 123.123) //Output  "123.1"
    string.Format("{0,5:###.0}", 1.123)   //Output  "  1.1"
    string.Format("{0,5:###.0}", 1234.123)//Output "1234.1"
  2. 9

    Otro con la interpolación de cadenas (C# 6+):

    double x = 123.456;
    $"{x,15:N4}"//left pad with spaces to 15 total, numeric with fixed 4 decimals

    Expresión devuelve: " 123.4560"

  3. 6
    value.ToString("N1");

    Cambiar el número de decimales más.

    EDIT: se Perdió el relleno de bits

    value.ToString("N1").PadLeft(1);
    • Gracias. Pero el uso de PadLeft no funciona en mi caso, la cadena con la {0:…} marcador de posición que va a contener más texto del que sólo el valor decimal.
    • Usted tiene que escribir `PadLeft(5)’. El parámetro es la longitud total de la cadena collar.
    • Por qué no se puede usar string.Format()?
    • Puedo usar la cadena.el formato y la quiero! 🙂
    • Así que ¿cuál es el problema con PadLeft?
    • PadLeft(value.ToString().Length + 1) entonces, supongo 😉 Ignorar el problema de más cosas en la cadena de curso. Usted no puede simplemente dividir y luego combinarlos juntos para imprimir?
    • No. Simplemente PadLeft(5)
    • Gracias! Si puedo, evito la cadena.formato. Este de aquí es mucho más fácil mantener la tarde sin todos esos crípticos cadena de códigos.
    • Muy bonito! Gracias!

  4. 0

    Todos por encima de solución de redondeo de decimales, en caso de que alguien está buscando una solución sin redondeo

    decimal dValue = Math.Truncate(1.199999 * 100) / 100;
    dValue .ToString("0.00");//output 1.99

Dejar respuesta

Please enter your comment!
Please enter your name here