• 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     }
    View Code

    其中“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);
    View Code

    所以,我们如果只给一个参数,第二个参数取本地默认的值,这个值和操作系统中某些参数设置有关系。如果我们可以给定第二个参数,就可以保证在任何操作系统中都转为人民币,改进后的代码是

     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     }
    View Code

    这里给出几个常用的货币标志码:

    人民币:zh-CN

    美元:en-US

    法郎:fr-FR

    日元:ja-JP

    注:日元为羊字符 一横,人民币为两横:¥

    参考文档:http://msdn.microsoft.com/zh-cn/dynamics/dwhawy9k(v=vs.85)/ 

  • 相关阅读:
    AS3.0纯代码编写的两款loading效果
    AS3.0 Vector的运用
    java 垃圾回收总结(1)
    as3垃圾回收机制
    AS3.0 效率优化
    数组去重的方法
    javascript 的垃圾回收机制讲一下
    浅拷贝和深拷贝
    判断 js 类型的方式
    前端安全问题?
  • 原文地址:https://www.cnblogs.com/zhangyongheng/p/4171130.html
Copyright © 2020-2023  润新知