专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »DotNet » js数字格式化:格式化数字的实现方法 »正文

js数字格式化:格式化数字的实现方法

来源: 发布时间:星期三, 2008年9月10日 浏览:282次 评论:0
有机会能够接触到巨大的,几乎无法理解的数字是系统管理工作中一件重要的事情.例如,当你在处理WMI中的Win32_LogicalDisk类时,你可能会使用到属性FreeSpace,这是一个返回磁盘驱动器上可使用的空间数值.在编写脚本人的某台测试计算机上,下面是一个可能的返回值:
19385790464
这个数字究竟是多少呢?恩,让我想想,它是…我认为他是…如果您能加上一些逗号分隔的话它是–恩,我们要承认:我们想不出来.我们唯一知道的就是,这个数字太大了.
事实的真相就是计算机根本就不需要–也不打算–使用格式友好的,易于理解的数字.然而,对于计算机使用者,确实完全不同的事情.类似19385790464这样的数字对我们来说没什么用处;更加有意义的数字类似于:
19,385,790,464
正如你亲眼看到的,一旦你插入几个逗号,我们就能够更加容易的知道这台计算机上的空闲磁盘空间比19GB多一点.这件事情的道理非常的明显:如果你希望输出的格式便于理解,你就必须在显示他们之前先对他们进行格式化.现在只有一个小问题了:你如何才能在显示他们之前准确的格式化你的数字呢?
如果我们还是在使用VBScript的话,答案相当的简单:我们只要简单的调用函数FormatNumber,我便得到了我想要的结果.当然,我们并没有使用VBScript;我们正在用WindowsPowerShell.我们只能说,PowerShell并不包含任何内建函数或cmdlet能够允许我们格式化数字.这似乎表明,我们得到的无格式数字是相当不走运啊.
在WindowsPowerShell中使用.NET来格式化数字
我们还能怎么样?WindowsPowerShell确实没有任何的内建函数或cmdlet用来格式化数字.但是这没什么问题;我们不需要任何的内建函数或cmdlets.取而代之的是,我们只要使用.NET框架的格式化方法即可.例如,来思考下这个简单的PowerShell脚本:
$a=19385790464
\"{0:N0}\"-f$a
当我们运行这个脚本时,我们会得到什么样的结果?这就是我们将会得到返回结果:
19,385,790,464
换句话说,我们将会得到这种我们希望获得的格式有好的数字.
那么我们究竟怎么做到的?回答这个问题前,让我们先来仔细看看我们的格式化命令.我们命令的核心就是这个不起眼的结构:“{0:N0}”.这真是一个看起来疯狂的代码,然而他也是一个很容易被分解的代码:
l最开头的0(分号前面的0)表示被格式化项目的索引序号.以后使用时,只需要在这里填上0,格式化命令就会很好得为你工作.
l字符N表示了应用的格式类型;这个例子中,字符N就是Numeric的缩写.那着里还有其他我们可以应用的格式吗?当然还有了,我们稍后会再介绍一些的.
l第二个0(字符N后面的0)被称为“精度指示符,”当与数字格式结合使用时,用于指示显示几位小数点后数字.这个例子中我们不希望显示任何小数点后的数字,所以我们设置为0.假设我们希望先是小数点后三位数字呢?没问题;这个命令将会注意到你的需求:\"{0:N3}\"-f$a.运行这个命令你将会得到类似这样的输出:19,385,790,464.000. [Page]
这就是我们所做的一切;在指定了格式类型后,我们指定参数–f(format),然后跟着我们希望格式化的值($a).我们是不是只能格式化变量呢?当然不是啦;如果你想的话,你甚至可以格式字面值:
\"{0:N2}\"-f554.22272
试试这个命令,看看会得到什么样的结果.
有一件事情你必须清楚,格式化命令仅仅控制着值的显示;值本身是不会发生任何变化的.例如,思考下面这个脚本
$a=5.136
\"{0:N0}\"-f$a
如果我们运行这个脚本,屏幕上将会显示5;如果我们在执行完脚本后显示变量$a的值,我们将会得到:
5.136
如果你需要改变变量$a实际的值,你需要将格式化后的数字赋值给变量(就像这里的变量$a):
$a=5.136
$a=\"{0:N0}\"-f$a
现在你再次显示变量$a的值,你将会得到:
5
更多有趣的格式化信息
我们之前已经注意到了,还有一些其他可以用于数字的格式.除了下面这些你能够应用于数字格式化的格式外,我们将不会继续深入讨论这一话题:
名称说明符描述
货币C使用区域性的货币格式显示数值,精度描述用来控制显示小数点后数字个数.
十进制D按照精度描述符指定的数字个数显示数值;如果需要在数字开头补0.
百分数P数值先乘以100,然后以百分数形式显示.精度描述符指定显示的小数点位数.
十六进制X数值被按照十六进制格式显示.精度描述符指示显示的字符数量,如果长度不足,在开头补0.

试着运行下面的脚本,可以为您展示这些不同的格式是如何工作的:
$a=348

\"{0:N2}\"-f$a
\"{0:D8}\"-f$a
\"{0:C2}\"-f$a
\"{0:P0}\"-f$a
\"{0:X0}\"-f$a
这些事你将会得到的结果:
348.00
00000348
$348.00
34,800%
15C
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: