首页 > 代码库 > ToString("C2")转人民币金额时的相关问题
ToString("C2")转人民币金额时的相关问题
我们常常会遇到将数字转换为金额字符串,方法很简单,比如:
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 double num = 123.456; 6 string num1 = num.ToString("C2"); 7 Console.WriteLine(num1); 8 Console.Read(); 9 }10 }
其中“C”是表示转金额,”2“是表示保留小数点后两位的精度。
结果是
但是,实际中我们写的程序,客户用的时候遇到了问题,就是在他们那,用同样的代码,结果却是:
最后研究了一番,发现,ToString()方法有一个重载是 两个参数的,官方给的是:
1 // 2 // 摘要: 3 // 使用指定的格式和区域性特定格式信息,将此实例的数值转换为它的等效字符串表示形式。 4 // 5 // 参数: 6 // format: 7 // 一个数值格式字符串。 8 // 9 // provider:10 // 一个提供区域性特定的格式设置信息的对象。11 //12 // 返回结果:13 // 此实例的值的字符串表示形式,由 format 和 provider 指定。14 [SecuritySafeCritical]15 public string ToString(string format, IFormatProvider provider);
所以,我们如果只给一个参数,第二个参数取本地默认的值,这个值和操作系统中某些参数设置有关系。如果我们可以给定第二个参数,就可以保证在任何操作系统中都转为人民币,改进后的代码是
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 double num = 123.456; 6 string num1 = num.ToString("C2",CultureInfo.CreateSpecificCulture("zh-CN"))); 7 Console.WriteLine(num1); 8 Console.Read(); 9 }10 }
这里给出几个常用的货币标志码:
人民币:zh-CN
美元:en-US
法郎:fr-FR
日元:ja-JP
注:日元为羊字符 一横,人民币为两横:¥
参考文档:http://msdn.microsoft.com/zh-cn/dynamics/dwhawy9k(v=vs.85)/
ToString("C2")转人民币金额时的相关问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。