¿Por qué 0.ToString("#.##")
devuelve una cadena vacía? ¿No debería ser 0.00
o al menos 0 ?
114
#
en el formato de cadena indica que el valor es opcional. Si desea obtener la salida 0.00
, necesita lo siguiente:
0.ToString("0.00");
Consulte aquí los formatos numéricos personalizados que se pueden pasar a este método.
Porque en una cadena de formato,
#
se usa para indicar un marcador de posición de carácter opcional; solo se usa si es necesario para representar el número.Si haces esto en su lugar:
0.ToString("0.##");
obtienes:0
Curiosamente, si haces esto:
0.ToString("#.0#");
obtienes:.0
Si desea los tres dígitos:
0.ToString("0.00");
produce:0.00
De los comentarios a esta respuesta, su argumento parece ser,
La respuesta es simple: tiene la opción de elegir cómo desea que se muestre. Para eso son las cadenas de formato personalizado. Simplemente ha elegido la cadena de formato incorrecta para sus necesidades .
fuente
De acuerdo con la documentación sobre el marcador de posición de dígitos .
Si desea que se muestre el cero, use Zero PlaceHolder
fuente
Prueba esto
0.ToString("#,##; #,##;0")
https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings#SectionSeparator
La primera sección se aplica a los valores positivos, la segunda sección se aplica a los valores negativos y la tercera sección se aplica a los ceros.
fuente
Úselo así:
0
after#
asegurará establecer el valor de salida en 0 si el valor es 0, de lo contrario, mostrará el valor. Así0.0.ToString("#0.##")=0.00
y10.ToString("#.##")=10.00
fuente