博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
符合中国人习惯的数字格式化
阅读量:5866 次
发布时间:2019-06-19

本文共 1799 字,大约阅读时间需要 5 分钟。

由于我们使用的FCL(Framework Class Library)是由微软开发人员写出来的。大部分规则默认都是符合欧洲人习惯的。就像数字的格式化。但这个默认规则在我们中国用着实在是不爽。

比如:123,456,789会英语的都知道,Hundred、Thousand、Million和Billion,都是三位三位的分隔。但是我们中国人的习惯是四位,我们没必要这点儿东西也学人家的吧。但是.NET 里面 默认就是这样进行分隔的。这个时候来让我们一步一步的将这个默认规则给改成符合我们中国人习惯的格式。好吧,开始。。。

以下会用到两个命名空间:

System.Globalization;

System.Threading;

首先从以下这个类开始:

// 摘要: //     提供有关特定区域性的信息(对于非托管代码开发,则称为“区域设置”)。这些信息包括区域性的名称、书写系统、使用的日历以及对日期和排序字符串的格式化设置。     [Serializable]     [ComVisible(true)] public class CultureInfo : ICloneable, IFormatProvider

在这个类内部可以获取当前区域默认使用的日历、获取可以使用的日历列表、当前区域的语言文化以及对当前区域使用的数字、货币、百分比格式化等;但是我们主要使用的是最后一项,该项使用了CultureInfo的一个属性。这个属性的类型为NumberFormatInfo,MSDN上的解释是:“根据区域性定义如何设置数值格式以及如何显示数值。”,它就是对当前区域的数字、货币、百分比进行格式化设置。这个类的结构视图如下:

下面讲一下使用:

比如有一个数字-1234567如果使用默认的格式化

Console.WriteLine((-1234567).ToString("N"));

结果:-1,234,567

这个时候我先获取当前区域的信息

var culture = CultureInfo.GetCultureInfo("zh-cn").Clone() as CultureInfo; if (culture == null) return;

我们看到上图一个属性、属性和属性这三个属性分别对应着:获取或设置数值中小数点左边每一组的位数。获取或设置货币值中小数点左边每一组的位数。获取或设置百分比值中小数点左边每一组的位数。只举一个例子后者使用一样:

culture.NumberFormat.CurrencyGroupSizes = new int[] { 4 };

这句是设置货币值每4位数字进行分隔,这才符合我们中国人的习惯。

此时还可以再设置每4位分隔时使用什么符,那就是使用另外一个属性进行设置了:

culture.NumberFormat.CurrencyGroupSeparator = "_";

这里我使用了一个下划线,其实使用空格比较合适,只是为了方便阅读。

然后将当前区域的设置信息赋值给当前线程的区域信息。

Thread.CurrentThread.CurrentCulture = culture;

这个时候运行程序我们将会看到想要的效果,如下

NumberFormatInfo类还可以设置小数点保留几位及负数的显示格式等。就不一一说了。这个东西很简单大家一看就明白。

最后贴出来源码:

var culture = CultureInfo.GetCultureInfo("zh-cn").Clone() as CultureInfo; if (culture == null) return;             culture.NumberFormat.CurrencyGroupSizes = new int[] { 4 };             culture.NumberFormat.CurrencyGroupSeparator = "_";             Thread.CurrentThread.CurrentCulture = culture;             Console.WriteLine((-1234567).ToString("N"));             Console.ReadKey(true);

转载地址:http://ccnnx.baihongyu.com/

你可能感兴趣的文章
不同VLAN之间相互通信的两种方式(单臂路由、三层交换)
查看>>
Java --深入分析java中的中文编码问题
查看>>
企业邮件系统的发展和变化
查看>>
linux上vnc server的详细配置过程
查看>>
软件测试方法
查看>>
Web报表工具FineReport的JS API开发(一)
查看>>
apache用户认证及域名跳转、访问日志
查看>>
Linux命令——sort
查看>>
cd命令,linux cd命令详解及用法
查看>>
ajax省市县联动(未连接数据库)
查看>>
虚拟机下centos 6网卡的添加
查看>>
AndroidStudio重启adb
查看>>
ospf生成树
查看>>
puppet 搭建lnmp架构
查看>>
关于新版PCI DSS,你了解多少?
查看>>
init程序
查看>>
jenkins 运行war命令
查看>>
linux常用命令
查看>>
Linux文件系统管理
查看>>
Dockerfile 指令详解
查看>>