2009-11-23 12 views
6

chcę wyświetlić liczbę z przecinkiem i dziesiętnyliczba wyświetlacz z przecinkami i kropkami

Przypadek 1: przykład jeśli liczba jest 3494309432324

wyświetlacz jak 34,94,30,94,32,324 ale nie 34,94,30,94,32,324.00

Przypadek 2: jeśli liczba ma wartości dziesiętnych im do 2 miejsc po przecinku i przecinkami

wyświetlacz jak 12,22,222.32

obecnie robię to przez 2 miejsc po przecinku, ale ja dont dostać przecinki

Label9.Text = sisRatio.ToString("#0.00");

wszelkie sugestie ..

dzięki

+0

Z ciekawości: Dlaczego chcesz oddzielić liczbę po * dwóch * cyfrach (zamiast po * trzech * cyfrach)? – Heinzi

+1

@Heinzi: Uważam, że pytanie dotyczy sposobu, w jaki liczby są reprezentowane w Indiach. –

+0

@Fredrik: Dzięki, to dobrze wiedzieć. – Heinzi

Odpowiedz

11

Zakładając, że chcesz zwykle 3 drętwienie ers następnie przecinek, myślę, że to zrobi, co trzeba:

Label9.Text = sisRatio.ToString("#,##0.##"); 

Jeden niewielki problem z tym jest to, że będzie tylko jedno miejsce po przecinku, jeżeli druga byłaby 0

1

to będzie działać:

Label9.Text = sisRatio.ToString("#,0.00"); //changed from "#0,0.00" to "#,0.00" 
4

Spróbuj:

Label9.Text = sisRatio.ToString("##,0.00"); 

jestem zakładając, że chcesz oddzielnymi grupami przez tysiące, a nie przez setki jak w twoim pytaniu. Zauważ, że użyje zlokalizowanego separatora dla aktualnej kultury.

+0

@Jamie, istnieją pewne kultury, które używają 2-cyfrowego grupowania, a niektóre (jak w przykładzie OP), które używają 3 cyfry dla grupy znajdującej się najbardziej po prawej, a następnie 2-cyfrowej. Ta informacja może zostać pobrana z 'CultureInfo.CurrentCulture.NumberFormat.NumberGroupSizes'. –

+0

@Frederik: Dzięki za wskazanie tego. Zbudowałem kilka aplikacji obsługujących ustawienia lokalizacji i wcześniej ich nie miałem. Zastanawiam się, czy grupowanie mojej pensji w grupach dwucyfrowych sprawiłoby, że poczułbym się lepiej z tą kwotą? –

4

Poniższy podejście powinno dać to, czego szukasz ,:

double d = 123456789.1; 
string format = d.ToString().IndexOf(NumberFormatInfo.CurrentInfo.NumberDecimalSeparator) >=0 ? "#,##0.00" : "#,##0"; 
Console.WriteLine (d.ToString(format)); 

Będzie to również pracować dla kultur, które nie posiadają grup 3-cyfrowych.

2

Wydaje się, że istnieją dwa sposoby, aby odpowiedzieć na to pytanie:

  1. algorytmicznego odpowiedź co daje liczbę w określonym formacie czyli 2 cyfr między przecinkami.

  2. Wyjaśnienie, że jest to rozwiązanie zależne od lokalizacji, ponieważ nie mogę uzyskać żadnej z podanych sugestii ToString() do pracy na moim komputerze.

To pytanie zaskoczyło mnie początkowo, ponieważ nie jest tak proste, jak się wydaje.

-1

Try To

Private Sub frmMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
      Thread.CurrentThread.CurrentCulture = New CultureInfo("hi-IN") 
    End Sub 

i .....

Powiązane problemy