Domanda

Sto cercando di usare String.Format ( "{0: c}", someValue) in C #, ma sto avendo difficoltà a capire come configurare l'output per soddisfare le mie esigenze. Qui ci sono le mie esigenze:

  1. 0 uscite a vuoto
  2. 1.00 uscite a $ 1.00
  3. 10.00 uscite A $ 10.00
  4. 100.00 uscite a $ 100.00
  5. 1000.00 uscite a $ 1,000.00

Ho provato String.Format ( "{0: c}", someValue), ma per i valori zero emette $ 0.00 che non è quello che voglio. Ho anche provato String.Format ( "{0: $ 0,0.00; $ (0,0.00); #}", someValue), ma per 1.0 che emette $ 01.00. String.Format ( "{0: $ 0.00; $ (0.00); #}", someValue) lavora per la maggior parte dei casi, ma quando è somevalue 1000.00 l'uscita è $ 1000.00.

C'è qualche formato che si adatta tutti i 5 casi di cui sopra? Tutta la documentazione che ho letto solo i dettagli le basi e non tocca su questo tipo di scenario.

È stato utile?

Soluzione

Se si utilizza

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

Si otterrà "" per il valore zero e gli altri valori devono essere formattati correttamente anche.

Altri suggerimenti

Provare qualcosa di simile a questo:

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

A seconda se si sta costantemente utilizzando lo stesso tipo di dati per tutti i valori di valuta, si potrebbe scrivere un metodo di estensione che fare in modo che il tuo caso è sempre soddisfatta. Per esempio, se si sta utilizzando il tipo di decimali:

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

Ecco un grande di riferimento che si potrebbe trovare utile, che riassume questi dati: http: //blog.stevex .net / string-formattazione-in-csharp /

I formati di valuta "C" sono grandi fino a quando avete bisogno di uno spazio vuoto per 0. Qui ci sono due modi, uno di cui sopra, simili a quelle che uso che ti danno il bianco per 0:

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

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

La seconda tecnica si sente più "fluida", se vi piace questo stile di codice (come faccio io).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top