Domanda

Ho un numero decimale, diciamo 1234.500.

Voglio visualizzarlo come 1.234,5.

Attualmente lo sto convertendo in un doppio per rimuovere gli 0 ".

string.Format("{0:0,0}",1234.500) Rimuove il luogo decimale e altre opzioni di formattazione sembrano usare due posti decimali indipendentemente.

Qualcuno può offrire informazioni?

È stato utile?

Soluzione

Dovresti usare una formattazione personalizzata come #,##0.00

string s = string.Format("{0:#,##0.00}", xx);

Produrrà 1,234.50 Quando xx = 1234,5 m
Dimentica di convertire a double, questo non aiuterà davvero.

Altri suggerimenti

Sei consapevole che .NET ha un supporto integrato per la formattazione corretta in base alle impostazioni regionali di ciascun utente dell'applicazione? Potrebbe essere meglio sfruttare le impostazioni regionali dell'utente (il framework .NET conosce già tutte le impostazioni giuste).

Tuttavia, se si desidera correggere l'applicazione in formatta i numeri in una particolare impostazione regionale, puoi comunque riscuotere una particolare locale di tua scelta e forzare .NET a usarlo come base di tutte le formattazioni (non solo numeri):

using System.Globalization;
using System.Threading;
...
CultureInfo us = new CultureInfo("en-US");

poi

Thread.CurrentThread.CurrentUICulture = us;

o solo

Console.WriteLine(d.ToString("c", us));

Dovresti essere consapevole che l'uso delle virgole come migliaia di persone è appropriato per il Regno Unito e gli Stati Uniti, ma non è come migliaia di persone dovrebbero essere visualizzate in altri paesi

"Mille e venticinque vengono visualizzate come 1.025 negli Stati Uniti e 1,025 in Germania. In Svezia, il migliaia di persone è uno spazio"

MSDN ha una sezione dedicata Dedicato a questo argomento che chiamano "globalizzazione" (vale a dire che è un buon termine di ricerca se mai devi dare la caccia più dettagliatamente). Quella pagina descrive come l'uso del segno sterlina funziona come segnaposto di cifre per rimuovere gli zeri finali (come suggerito da Henk Holterman in un commento precedente).

Guarda anche Stringhe di formato numerico personalizzato.

Un'altra alternativa:

decimal d = 1234.56m;
string s = d.ToString("N");    // 1,234.56

Hai provato questo?

   String.Format("{0:0,0.00}", 1234.560);

prova questo !

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        Try
            TextBox1.Text = Format(CInt(TextBox1.Text), "#,#")
            TextBox1.SelectionStart = TextBox1.Text.Length
        Catch ex As Exception

        End Try

End Sub

Try this:

string myNumber = string.Format("{0:#,0.00}", 1234.500);

(I've seen this in RDLC reports)

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