Domanda

La mia applicazione mostra attualmente numeri negativi come -1. Gli utenti hanno modificato i requisiti (solo per una modifica!) E ora dovremo visualizzare i numeri come (1). Posso abilitarlo per l'intera applicazione, ad esempio cambiare web.config o persino CultureInfo dell'app? C'è qualche effetto collaterale nel farlo dato che abbiamo molte pagine che contengono validatori di numeri?

Grazie!

È stato utile?

Soluzione

Per la valuta è davvero facile:

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

Questo utilizzerà le informazioni sulla cultura per il sistema.

Per numeri normali associati a dati, utilizzare Esempio di Mark Glorie .

Articolo MSDN

Altri suggerimenti

Userei la formattazione String. Apportare una modifica alla configurazione dell'applicazione per soddisfare un requisito dell'interfaccia utente è pesante. SteveX ha scritto un ottimo post sul blog sulla formattazione delle stringhe. È anche compatibile con markup (aspx) invece che rilevante solo nel codice.

Dal suo post:

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.

Che non è esattamente quello che vuoi, ma è vicino.

Controlla questo .. http://msdn.microsoft.com/en-us/library/91fwbcsb.aspx

Converte la rappresentazione di stringa di un numero in uno stile specificato nel suo equivalente decimale.

Puoi sempre scrivere il tuo metodo ToString () personalizzato come metodo di estensione, ma come hai già detto, usare CultureInfo è probabilmente migliore. Dai un'occhiata qui:

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

Ho aggiunto la pagina seguente ai segnalibri per eseguire la formattazione delle stringhe: http: //idunno.org/archive/2004/14/01/122.aspx

Circa a metà strada, dà la risposta:

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

Per rispondere alla tua altra domanda, non modificherei app.config per renderlo globale, per i motivi indicati nelle altre risposte.

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

Funziona.

DataFormatString="{0:c0}"
  • Importi negativi tra parentesi
  • Mille separatori - virgola
  • simbolo $ davanti

Stai visualizzando i tuoi dati in Gridview / Datagrids? In tal caso, è possibile applicare la formattazione per colonna rilegata, ad esempio:

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

Funziona solo con numeri interi comunque ...

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