Jak sformatować podwójną walutę zaokrągloną do najbliższego dolara?

Teraz mam

double numba = 5212.6312
String.Format("{0:C}", Convert.ToInt32(numba) )

To Da Mi

$5,213.00

Ale nie chcę".00".

Wiem, że mogę po prostu upuścić trzy ostatnie znaki ciągu za każdym razem, aby osiągnąć efekt, ale wydaje się, że powinien być łatwiejszy sposób.

Author: spilliton, 2009-05-21

6 answers

Po pierwsze - nie przechowuj waluty w double - zamiast tego użyj decimal. Za każdym razem. Następnie użyj" C0 " jako specyfikacji formatu:

decimal numba = 5212.6312M;
string s = numba.ToString("C0");
 86
Author: Marc Gravell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-20 20:36:48

To powinno wystarczyć:

String.Format("{0:C0}", Convert.ToInt32(numba))

Liczba po C określa liczbę miejsc dziesiętnych do włączenia.

Podejrzewam, że naprawdę chcesz używać decimal typ do przechowywania takich liczb.

 23
Author: Noldorin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-20 20:41:45
Console.WriteLine(numba.ToString("C0"));
 5
Author: RedFilter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-20 20:39:29

Myślę, że właściwą drogą do osiągnięcia celu jest to:

Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencyDecimalDigits = 0;

I dopiero wtedy należy wykonać wywołanie formatowania:

String.Format("{0:C0}", numba) 
 3
Author: Pejvan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-16 17:09:06
 decimal value = 0.00M;
        value = Convert.ToDecimal(12345.12345);
        Console.WriteLine(".ToString(\"C\") Formates With Currency $ Sign");
        Console.WriteLine(value.ToString("C"));
        //OutPut : $12345.12
        Console.WriteLine(value.ToString("C1"));
        //OutPut : $12345.1
        Console.WriteLine(value.ToString("C2"));
        //OutPut : $12345.12
        Console.WriteLine(value.ToString("C3"));
        //OutPut : $12345.123
        Console.WriteLine(value.ToString("C4"));
        //OutPut : $12345.1235
        Console.WriteLine(value.ToString("C5"));
        //OutPut : $12345.12345
        Console.WriteLine(value.ToString("C6"));
        //OutPut : $12345.123450

Kliknij, aby zobaczyć ekran wyjścia konsoli

Mam nadzieję, że to ci pomoże... Dzięki. :)
 3
Author: Bhanu pratap,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-25 11:00:37
 0
Author: Rodrigo Reis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-26 14:39:25