Pergunta

Eu estou tentando usar String.Format ( "{0: c}", somevalue) em C #, mas estou tendo um momento difícil descobrir como configurar a saída para atender às minhas necessidades. Aqui estão as minhas necessidades:

  1. 0 saídas para em branco
  2. 1.00 saídas para US $ 1,00
  3. 10,00 saídas para US $ 10,00
  4. 100,00 saídas para US $ 100,00
  5. 1000.00 saídas para US $ 1.000,00

Eu tentei String.Format ( "{0: c}", somevalue), mas para valores zero ele gera $ 0,00 que não é o que eu quero. Eu também tentei String.Format ( "{0: $ 0,0.00; $ (0,0.00); #}", somevalue), mas para 1.0 que gera $ 01.00. String.Format ( "{0: $ 0.00; $ (0,00); #}", somevalue) funciona para a maioria dos casos, mas quando somevalue é 1000,00 a saída é de R $ 1000,00.

Existe algum formato que vai caber todos os 5 casos acima? Toda a documentação Eu só ler detalhes os conceitos básicos e não toca neste tipo de cenário.

Foi útil?

Solução

Se você usar

string.Format("{0:$#,##0.00;($#,##0.00);''}", value)

Você vai ter "" para o valor zero e os outros valores devem ser formatados corretamente também.

Outras dicas

Tente algo parecido com isto:

String currency = (number == 0) ? String.Empty : number.ToString("c");

Dependendo se você está constantemente usando o mesmo tipo de dados para todos os seus valores de moeda, você poderia escrever um método de extensão que iria fazer com que o seu caso é sempre cumpridos. Por exemplo, se você estivesse usando o tipo decimal:

public static string ToCurrencyString (this decimal value)
{
  if (value == 0)
    return String.Empty;
  return value.ToString ("C");
}

Aqui está um grande de referência que você pode achar útil, que resume esses dados: http: //blog.stevex .net / string formatação-in-csharp /

Os formatos de moeda "C" são grandes até que você precisa de um espaço em branco para 0. Aqui estão duas maneiras, uma mencionado acima, semelhantes aos que eu uso que lhe dão o branco para 0:

// one way
string.Format("{0:$#,##0.00;($#,##0.00);''}", somevalue)

// another way
somevalue.ToString("$#,##0.00;($#,##0.00);''")

A segunda técnica se sente mais "fluente", se você gosta desse estilo de código (como eu faço).

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