如何格式化双倍货币四舍五入到最接近的美元?

时间:2009-05-20 20:35:08

标签: c# formatting rounding currency

现在我有

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

这会给我

$5,213.00

但我不想要“.00”。

我知道我每次只能删除字符串的最后三个字符以达到效果,但似乎应该有更简单的方法。

6 个答案:

答案 0 :(得分:91)

首先 - 请勿将货币保留在double中 - 请改用decimal。每次。然后使用“C0”作为格式说明符:

decimal numba = 5212.6312M;
string s = numba.ToString("C0");

答案 1 :(得分:24)

这应该做的工作:

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

C后面的数字指定要包含的小数位数。

我怀疑你确实想要使用decimal类型存储这些数字。

答案 2 :(得分:5)

Console.WriteLine(numba.ToString("C0"));

答案 3 :(得分:3)

我认为实现目标的正确方法是:

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

然后你才应该进行格式调用:

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

答案 4 :(得分:2)

 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

click to see Console Out Put screen

希望这可以帮助你...

感谢。 :)

答案 5 :(得分:0)