`
isiqi
  • 浏览: 16356740 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

格式化数字[转载]

阅读更多
如何将一个浮点数显示为百分比?如何将一个数字用科学记数法表示?如何将数字用逗号分割?
这些我以前就是不能清楚,学习了一下.Net中相关的知识点,了解了一个大概。
我们这里只看通过指定格式化字符串来格式化数字的方法。
先看看常用的一些指定字符串:
格式字符
说明和关联属性
cC
dD
十进制格式。
eE
科学计数(指数)格式。
fF
固定点格式。
gG
常规格式。
nN
rR
往返格式,这确保将已转换成字符串的数字转换回数字时具有与原数字相同的值。
xX
十六进制格式。
这里说明的比较清楚,当我们需要指定某个格式就在ToString方法中加上”c”或者其他的字符就可以了。这里不加累述。
以上称为标准格式化;另外有用户自定义的格式化,请首先看下面的一些信息。
格式字符
说明
0
零占位符
如果格式化的值在格式字符串中出现“0”的位置有一个数字,则此数字被复制到输出字符串中。小数点前最左边的“0”的位置和小数点后最右边的“0”的位置确定总在输出字符串中出现的数字范围。“00”说明符使得值被舍入到小数点前最近的数字,其中零位总被舍去。例如,用“00”格式化 34.5 将得到值 35
#
数字占位符
如果格式化的值在格式字符串中出现“#”的位置有一个数字,则此数字被复制到输出字符串中。否则,输出字符串中的此位置不存储任何值。请注意,如果“0”不是有效数字,此说明符永不显示“0”字符,即使“0”是字符串中唯一的数字。如果“0”是所显示的数字中的有效数字,则显示“0”字符。“##”格式字符串使得值被舍入到小数点前最近的数字,其中零总被舍去。例如,用“##”格式化 34.5 将得到值 35
.
小数点
格式字符串中的第一个“.”字符确定格式化的值中的小数点分隔符的位置;任何其他“.”字符被忽略。用作小数点分隔符的实际字符由控制格式化的 NumberFormatInfo NumberDecimalSeparator 属性确定。
,
千位分隔符和数字比例换算
“,”字符有两种用途。首先,如果格式字符串在小数点(如果有)左边的两个数字占位符(0 #)之间包含“,”字符,则输出将在小数点分隔符左边的每三个数字之间插入千位分隔符。输出字符串中用作小数点分隔符的实际字符由控制格式化的当前 NumberFormatInfo NumberGroupSeparator 属性确定。
其次,如果格式字符串在紧邻小数点的左侧包含一个或多个“,”字符,则数字在格式化之前将被“,”字符数除然后乘以 1000。例如,格式字符串“0,,” 100,000,000 简单表示为 100。使用“,”字符指示比例换算在格式化数字中不包括千位分隔符。因此,若要将数字缩小 1,000,000 倍并插入千位分隔符,应使用格式字符串“#,##0,,”
%
百分比占位符
在格式字符串中出现“%”字符将导致数字在格式化之前乘以 100。适当的符号插入到数字本身在格式字符串中出现“%”的位置。使用的百分比字符由当前的 NumberFormatInfo 类确定。
E0
E+0
E-0
e0
e+0
e-0
科学计数法
如果“E”“E+”“E-”“e”“e+”“e-”中的任何一个字符串出现在格式字符串中,而且后面紧跟至少一个“0”字符,则数字用科学计数法来格式化,在数字和指数之间插入“E”“e”。跟在科学计数法指示符后面的“0”字符数确定指数输出的最小位数。“E+”“e+”格式指示符号字符(正号或负号)应总是置于指数前面。“E”“E-”“e”“e-”格式指示符号字符仅置于负指数前面。
\
转义符
C# C++ 的托管扩展中,反斜杠字符使格式字符串中的下一个字符被解释为转义序列。它与传统的格式化序列一起使用,如“\n”(换行)。
在某些语言中,转义符本身用作文本时必须跟在转义符之后。否则,编译器将该字符理解为转义符。使用字符串“\\”显示“\”
请注意,Visual Basic 中不支持此转义符,但是 ControlChars 提供相同的功能。
'ABC'
"ABC"
字符串
引在单引号或双引号中的字符被原样复制到输出字符串中,而且不影响格式化。
;
部分分隔符
“;”字符用于分隔格式字符串中的正数、负数和零各部分。
其他
所有其他字符
所有其他字符以文本形式复制到输出字符串中它们出现的位置。
是不是有点晕?
那么我们就我们常用的慢慢看吧。
Vb程序中我们经常看见的格式化字符串就是”##,##.####” ,这样的一个格式到底是什么呢?
我们针对两个数字来看一下:
-123456789.12345经过该字符串格式化后应为:-123456789.1235
0.3200经过该字符串格式化后应为:.32
这样我们可以对#,.结合上面的表格说明一下了:
#
数字占位符
如果格式化的值在格式字符串中出现“#”的位置有一个数字,则此数字被复制到输出字符串中。否则,输出字符串中的此位置不存储任何值。请注意,如果“0”不是有效数字,此说明符永不显示“0”字符,即使“0”是字符串中唯一的数字。如果“0”是所显示的数字中的有效数字,则显示“0”字符。“##”格式字符串使得值被舍入到小数点前最近的数字,其中零总被舍去。例如,用“##”格式化 34.5 将得到值 35
该颜色所示的原因决定了 0.3200经过该字符串格式化后应为:.32
这是我想说明的一点
对此形成对比的是:
格式字符
说明
0
零占位符
如果格式化的值在格式字符串中出现“0”的位置有一个数字,则此数字被复制到输出字符串中。小数点前最左边的“0”的位置和小数点后最右边的“0”的位置确定总在输出字符串中出现的数字范围。00”说明符使得值被舍入到小数点前最近的数字,其中零位总被舍去。例如,用“00”格式化 34.5 将得到值 35
按照这个说明
0.3200经过该字符串”00000000,000”格式化后应为:00000000.320
这个就比较特殊。
同样道理对于342 经过字符串”00000000”格式化后是:” 00000342” ,这里我看见了一个以前项目中可以改进的地方,在原一个项目中”BMS(bug management system) ”bugID是一个整数,但是在显示时应该在前面补0到九位,当时的做法是变成字符串后判断位数后加,现在看来可以直接用”000000000”就达到目的了,原来如此。
也是原来如此,如果我们在.net中用##,##.####来格式化数字,很可能就不是我们想得到的常用的类型,如果我们希望得到我们常写常用的数字样式我认为,格式化字符串应该修正为 ##,#0.####对于Vb我没有做过尝试,可能和.net中也是一样的。
另外对于-123456789.12345我们用”#,#.##” 和用”##,##.##”得到的结果完全一致,
这说明在添加了,#的占位符作用失去。
看看’,’的说明:
,
千位分隔符和数字比例换算
“,”字符有两种用途。首先,如果格式字符串在小数点(如果有)左边的两个数字占位符(0 #)之间包含“,”字符,则输出将在小数点分隔符左边的每三个数字之间插入千位分隔符。输出字符串中用作小数点分隔符的实际字符由控制格式化的当前 NumberFormatInfo NumberGroupSeparator 属性确定。
由此可见”##,##.##”的作用和”#,#.##”的作用完全一致,因为他们都是在小数点左边的数字占位符之间包含有,字符。而且#有其自身特点。如果对于12.23”00,00.00””0,0.00”格式化结果就会有不同”012.23””12.23”.而用”000,0.00”和用”0,000.00”则是等价的。
,用作数字比例转换的我们不是很常用,结合说明如果123456.25”#,,.##”格式化
其实就是将原数字除以 1000 2次方(两个逗号决定的),然后舍入到两位小数。
%
百分比占位符
在格式字符串中出现“%”字符将导致数字在格式化之前乘以 100。适当的符号插入到数字本身在格式字符串中出现“%”的位置。使用的百分比字符由当前的 NumberFormatInfo 类确定。
%很简单,都不用多说。可以结合占位符和千位分割符一起使用。
另外我觉得可以考虑一下的是
;
部分分隔符
“;”字符用于分隔格式字符串中的正数、负数和零各部分。
这个例子MSDN中说明得比较好,可以参考,感觉这个在将来项目中我们还是可能用到的
时间短暂,就瞎说到这里。稍后我可能会补充上NumberFormatInfo 相关操作,并整理该文档。
有这方面经验的疑问的可以联系我一起探讨哈: Justin Sun共同完善。
分享到:
评论

相关推荐

    数字图像锐化

    二维图像均匀采样,可得到一幅离散化成M×N样本的数字图像,该数字图像是一个整数阵列,因而用矩阵来描述该数字图像是最直观最简便的。而MATLAB的长处就是处理矩阵运算,因此用MATLAB处理数字图像非常的方便。MATLAB...

    printf的格式控制的完整格式(转载)

    `printf`函数是C语言中的一个标准输出函数,用于格式化输出数据。它允许程序员自定义输出的格式,包括对齐方式、填充字符、域宽和精度等。下面是对`printf`格式控制的详细解释: 1. **%**: 开始符号 `%`是`printf`...

    2008车展专题转载

    综上所述,"2008车展专题转载"不仅涵盖了当年汽车工业的历史瞬间,还涉及了文件压缩、图像处理和数字媒体管理等多个IT领域的知识点。通过解压并查看这些图片,我们可以深入了解到那次车展的盛况,同时也学习到与图像...

    转载使用许可协议范本精选.doc

    - 受权作品:指通过协议授权的数字化形式表达的文学、艺术和科学领域的作品。 - 原作者:指创作受权作品的自然人或被视为作者的法人。 - 受权方:提供作品授权的自然人、法人或其他组织。 - 获受权方:根据协议...

    转载PSI/SI的理解

    首先,我们需要了解MPEG-2,它是Moving Picture Experts Group(动态图像专家组)与ISO(国际标准化组织)共同制定的一种数字视频压缩标准。MPEG-2主要用于DVD和Digital Video Broadcasting (DVB)系统,标准文档为...

    Python中 CSV格式清洗与转换的实例代码

    CSV(Comma-Separated Values,逗号分隔值)格式是一种通用的文件格式,用于以纯文本形式存储表格数据,如数字和文本。CSV文件由任意数量的记录组成,记录间以换行符分隔,每个记录由字段组成,字段之间以逗号分隔。...

    Matlab界面设计车牌识别[Matlab界面设计].zip

    再由检索模块对牌照进行搜索、检测、定位,并分割出包含牌照字符的矩形区域,然后对牌照字符进行二值化并将其分割为单个字符,然后输入JPEG或BMP格式的数字,输出则为车牌号码的数字。 ——————————————...

    jstl源代码,转载内容

    4. **Functions标签库**: 这个库包含了来自Commons Lang库的一些有用函数,可以增强JSP页面的表达能力,比如字符串处理、数字格式化等。 在"jstl源代码"中,我们可以深入研究这些标签的实现原理,理解它们如何与JSP...

    在线广播收听V2009520(转载)

    在线广播是通过将音频信号数字化并上传到服务器,用户通过互联网连接下载或流式传输这些数据来实现收听。这一过程涉及到的主要技术包括HTTP或RTSP(实时流协议)进行数据传输,AAC+、MP3、OPUS等音频编码格式用于...

    《精密制造与自动化》征稿简约 (6).pdf

    9. 数字化收录:期刊已加入中国期刊网、万方数据中国数字化期刊群等数字化媒体,并被《中国核心期刊(遴选)数据库》收录。投稿即表示作者同意作品上网或转载,并且稿酬已包含相关费用。 以上就是从提供的文件内容...

    【RPA之家转载AA视频教程】14.Configuration .rar

    RPA,即Robotic Process Automation,是近年来企业数字化转型中的热门技术之一。它通过自动化工具模拟人类在应用软件上的操作,以实现业务流程的自动化。在这个由RPA之家转载的AA(Automation Anywhere)视频教程中...

    【重磅、独家、2022更新!】1998-2022上市公司金融化程度数据大合集!四大权威指标!

    【原创整理,严禁任何团队和个人转载获利,转载必究!】 上市公司金融 化是近年来研究的热点方向之一,将上市公司...最新、观测值数量最全面,市面上的上市公司数字化程度数据,年份较短(大部分只到20 20年),还有人

    电子书刊市场竞争力与投资前景预测报告.docx

    ### 电子书刊市场竞争力与投资前景预测报告 #### 第一章 数字杂志电子书刊相关概述 **一、数字杂志电子书刊定义** ...随着数字技术的不断进步和用户需求的多样化,数字出版行业的前景十分广阔。

    jQuery表单验证 转载

    总结,jQuery表单验证通过强大的jQuery FormValidator插件,让开发者能够方便地设置各种验证规则,实现人性化的用户体验。这个插件不仅简化了代码,也提高了表单验证的效率和灵活性。通过熟练掌握这些知识点,可以...

    眼镜试戴功能转载

    在当前的数字化时代,增强现实(AR)技术正逐渐融入我们的日常生活,特别是在零售业中,如眼镜销售领域。"眼镜试戴功能"是一项利用AR技术让顾客在购买前虚拟试戴眼镜的服务。这个功能通常应用于移动端应用,为用户...

    Authorware多媒体课件制作(转载)

    11. **数字电影图标(Digital Movie Icon)**:用于播放数字电影文件,支持多种格式。 通过这些图标的设计和组合,用户可以构建复杂的交互式多媒体项目。接下来,我们将会逐步介绍如何使用这些图标来创建多媒体课件。...

    (转载)用Windows Media 编码器实现现场直播的几点突破

    该软件主要负责将实时的音视频信号转化为数字流,并按照特定的编码格式(如WMV,WMA)进行封装,然后通过网络传输到观众的设备上。它支持多种输入源,包括摄像头、桌面屏幕、音频设备等,可以灵活适应不同类型的直播...

    留置室监控管理系统解决方案.pdf

    系统操作方便易掌握,硬盘无需格式化,系统启动速度快。系统具有以太网接口,能够与广域网连接,所有录像查询、录像回放等功能均可通过联网计算机实现。系统具有音视频存贮和同时回放功能,支持多路音视频输入,一路...

Global site tag (gtag.js) - Google Analytics