ASP.NET - Numeri negativi tra parentesi
-
03-07-2019 - |
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!
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 .
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:
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 ...