¿Por qué 0.ToString("#.##")
devuelve una cadena vacía? ¿No debería ser 0.00
o al menos 0 ?
¿Por qué 0.ToString("#.##")
devuelve una cadena vacía? ¿No debería ser 0.00
o al menos 0 ?
Respuestas:
#
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,
debería mostrar '0', porque ¿por qué alguien querría ver una cadena vacía si el valor numérico es 0?
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 .
De acuerdo con la documentación sobre el marcador de posición de dígitos .
Si el valor que se formatea tiene un dígito en la posición donde aparece el '#' en la cadena de formato, ese dígito se copia en la cadena de resultado. De lo contrario, no se almacena nada en esa posición en la cadena de resultados. Este especificador nunca muestra el carácter '0' si no es un dígito significativo, incluso si '0' es el único dígito de la cadena. Mostrará el carácter '0' si es un dígito significativo en el número que se muestra. La cadena de formato "##" hace que el valor se redondee al dígito más cercano que precede al decimal, donde siempre se usa el redondeo desde cero. Por ejemplo, formatear 34.5 con "##" daría como resultado el valor 35.
Si desea que se muestre el cero, use Zero PlaceHolder
Si el valor que se formatea tiene un dígito en la posición donde aparece el '0' en la cadena de formato, ese dígito se copia en la cadena de resultado. La posición del '0' más a la izquierda antes del punto decimal y el '0' más a la derecha después del punto decimal determina el rango de dígitos que siempre están presentes en la cadena de resultado.
El especificador "00" hace que el valor se redondee al dígito más cercano que precede al decimal, donde siempre se usa el redondeo desde cero. Por ejemplo, formatear 34.5 con "00" resultaría en el valor 35.
Prueba esto 0.ToString("#,##; #,##;0")
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.
Úselo así:
0.ToString("#0.##")
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