Pergunta

Parece que String.Format não vai formatar uma string como entrada. Estou fazendo algo errado, ou é esse comportamento apenas nativa?

Input: 0,37

Isso não funciona.

string x = String.Format("{0:P}", myString)

Saída: 0,37

Este faz.

string x = String.Format("{0:P}", Convert.ToDecimal(myString))

Saída: 37,00%

Foi útil?

Solução

Eu acredito que este é o comportamento esperado para 'formatação composite'.

O primeiro exemplo é tentar aplicar regras de formatação numéricas para uma string. Seu segundo exemplo está tentando aplicar regras de formatação numéricas para um número que pode ter posições decimais.

Consulte este artigo no MSDN para mais informações.

Outras dicas

A opção de formato que você está tentando apenas para aplicar funciona para números. Não existe o conceito de cordas inteligentes em .NET em que o CLR inspeciona a string para um tipo.

Estou fazendo algo errado, ou é esse comportamento apenas nativa?

Isso é comportamento nativa. Não é, basicamente, o trabalho de Format para interpretar a entrada string. Format assume que o usuário fornece os dados corretos - no seu caso, numérica de dados. Uma cadeia não é numérico, mesmo que representa um número (esta é a distinção mais importante no CS entre um valor / semântica e sua representação / sintaxe!).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top