Pergunta

A minha aplicação está a ser apresentado números negativos como -1. Os usuários mudaram os requisitos (apenas para uma mudança!) E agora vamos ter de exibir os números como (1). Posso permitir que para toda a aplicação digamos alterando o web.config ou mesmo CultureInfo do aplicativo? Existe algum efeito colateral de fazer isso, já que temos muitas páginas que contêm validadores número?

Obrigado!

Foi útil?

Solução

Para moeda é realmente fácil:

String.Format("{0:C}", value)

Isto irá usar a informação cultura para o sistema.

Para números normais sendo dados vinculados, use amostra do Mark Glorie .

MSDN artigo

Outras dicas

Eu usaria string de formatação. Fazer uma mudança de configuração do aplicativo para satisfazer uma exigência UI é entregou-pesado. SteveX escreveu um grande post sobre string de formatação. É também compatível com marcação (aspx) em vez de apenas relevante no código.

De seu posto:

String.Format(”{0:$#,##0.00;($#,##0.00);Zero}”, value);

    This will output “$1,240.00″ if passed 1243.50. It will output the 
    same format but in parentheses if the number is negative, and will
    output the string “Zero” if the number is zero.

O que não é exatamente o que você quer, mas é perto.

Marque esta .. http://msdn.microsoft.com/en-us/library/91fwbcsb.aspx

Converte a representação de cadeia de um número em um estilo especificado para seu equivalente decimal.

Você pode sempre escrever o seu próprio método ToString () personalizada como um método de extensão, mas, como você mencionou, usando CultureInfo é provavelmente melhor. Dê uma olhada aqui:

http://msdn.microsoft.com /en-us/library/system.globalization.numberformatinfo.numbernegativepattern.aspx

Eu tenho a seguinte página marcada para fazer corda formatação: http: //idunno.org/archive/2004/14/01/122.aspx

Sobre a meio caminho, ele dá a resposta:

String.Format("{0:£#,##0.00;(£#,##0.00);Nothing}", value);

Para responder à sua outra pergunta, eu não iria alterar a app.config para torná-lo global, por razões dadas nas outras respostas.

String.Format(”{0:f;(f);0”, -1);

Isso funciona.

DataFormatString="{0:c0}"
  • valores negativos entre parênteses
  • Thousand separater - vírgula
  • $ símbolo na frente

Você está exibindo seus dados em Gridview / DataGrids? Se sim, então a formatação pode ser aplicada per-bound coluna, algo como:

<asp:BoundField DataFormatString="{##;(##)}"/>

Isso só funciona com inteiros no entanto ...

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