Por que 0.ToString("#.##")
retorna uma string vazia? Não deveria ser 0.00
ou pelo menos 0 ?
114
#
no formato de string indicam que o valor é opcional. Se você deseja obter a saída, 0.00
você precisa do seguinte:
0.ToString("0.00");
Veja aqui os formatos numéricos personalizados que podem ser passados para este método.
Porque em uma string de formato, o
#
é usado para significar um marcador de posição de caractere opcional; só é usado se necessário para representar o número.Se você fizer isso:
0.ToString("0.##");
você obtém:0
Curiosamente, se você fizer isso:
0.ToString("#.0#");
você obtém:.0
Se você quiser todos os três dígitos:
0.ToString("0.00");
produz:0.00
A partir dos comentários a esta resposta, seu argumento parece ser,
A resposta é simples: você pode escolher como deseja que seja exibido. É para isso que servem as strings de formato personalizado. Você simplesmente escolheu a string de formato incorreta para suas necessidades .
fonte
De acordo com a documentação sobre o Digit Placeholder .
Se você quiser que o zero seja exibido, use o Zero PlaceHolder
fonte
Tente isto
0.ToString("#,##; #,##;0")
https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings#SectionSeparator
A primeira seção se aplica a valores positivos, a segunda seção se aplica a valores negativos e a terceira seção se aplica a zeros.
fonte
Use-o assim:
0
depois#
irá garantir definir o valor de saída para 0 se o valor for 0, caso contrário, ele exibirá o valor. Então0.0.ToString("#0.##")=0.00
e10.ToString("#.##")=10.00
fonte