2009-05-20 208 views
51

现在我有如何将货币格式化为近似美元的货币?

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

这会给我

$5,213.00 

,但我不希望” .00" 。

我知道我可以每次放弃字符串的最后三个字符来达到效果,但似乎应该有一个更简单的方法。

+8

numba是一个错误的变量名称...多一个字符会给你“数字” – 2009-05-20 20:40:45

+28

奥马尔是正确的,但是“数字”也是一个变量的废话名称。 – 2009-05-20 20:45:54

回答

83

首先 - 不要将货币保留在double - 使用decimal代替。每次。然后使用“C0”的格式说明:

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

没有浮点实际上应该用作货币字段。以美分/便士/最低允许货币单位存储的整数是避免舍入错误的唯一方法(如果您需要超出长整数范围的数字,则为BigInt库:)) – workmad3 2009-05-20 20:39:43

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

这应该做的工作:

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

C后的数字指定小数的位数。

我怀疑你真的想用decimal类型来存储这样的数字。

3

我想实现自己的目标,正确的方式是这样的:

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

然后才是你应该做的格式调用:

String.Format("{0:C0}", numba) 
3
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

希望这可以帮助你......

感谢。 :)