js对数字的格式化

在jsp页面上可以使用<fmt:------对数字对行格式化

在js中----------

Javascript也提供了对数字进行格式化输出的支持

Number对象提供的几种格式化函数:

  toExponential([fractionDigits])   :将数字按科学计数法格式返回,其中的fractionDigits值小数点后保留的位数。
  toFixed([fractionDigits])   :将数字按指定的小数点位数返回,其中的fractionDigits值小数点后保留的位数。
  toPrecision([precision])   :将数字按指定的精度返回(这个精度不是指小数点后几位),其中precision是指定的精度值。

var num=56.45678;
var rs1=num.toExponential(2);//rs1的值为5.65e+1
var rs2=num.toFixed(2);//rs的值为56.45
var rs3=num.toPrecision(2);//rs的值为56

虽然说Number对象提供的这些方法能够解决不少的数字转化问题,但是对于许多情况还是不好满足的,例如对百分号的支持等等。

   为了解决这个问题,并提供更为强大和灵活的数字格式化要求,JsJava专门提供了的Javascript自定义类来进行支持,你可以下载jsjava-1.0.js,引用其中的src/jsjava/text/NumberFormat.js或者直接引用jslib/jsjava-1.0.js,举例如下:

<script src="js/jsjava/text/NumberFormat.js"></script>
<script src="js/jsjava/lang/StringBuffer.js"></script>
<script src="js/jsjava/lang/IllegalArgumentException.js"></script>
<script>
var nf=new DecimalFormat();
nf.applyPattern(
"000.000%");
var res=nf.format(-0.893566);
document.write(res
+"<br>");
nf.applyPattern(
"0000.00");
var res=nf.format(-53.385967);
document.write(res
+"<br>");
nf.applyPattern(
"0000.000E00");
var res=nf.format(53.385967);
document.write(res
+"<br>");
</script>

   显示结果为:

   -89.357%
   -53.39
   5338.597e-2

金额

function formatNum(num,n)
{//参数说明:num 要格式化的数字 n 保留小数位
    num = String(num.toFixed(n));
    var re = /(-?\d+)(\d{3})/;
    while(re.test(num)) num = num.replace(re,"$1,$2")
    return num;
}
alert(formatNum(1234005651.789,2));
// --></mce:script>

posted on 2011-01-12 14:47  archie2010  阅读(3260)  评论(0编辑  收藏  举报