JavaScript中浮点数的保留小数位数的问题

方法一

简介:如题! 繁琐版。。。

代码如下:

var significantFigure= function(value,figure){
                var arr=(value+'').split('.');//将拿到的值转换成字符串 然后用小数点进行切割
                arr[0]=parseFloat(arr[0]);//将切割后的数组 第一个值转换成浮点值
                arr[1]='0.'+arr[1];    //将切割后的数组的 第二个值转换成小数点形式的字符串
                arr[1]=parseFloat(arr[1]).toPrecision(figure);//将数组第二个值转换成浮点值 按 要求的精确位数四舍五入【注:返回值是String类型】
                
                //判断处理后的数组第一个值是否有. 有判断其长度,如果长度小于不够精确位数,加0---【注 字符串拼凑】                
                arr[1]+=(RegExp('[.]').test(value))?(arr[1].length==figure+1?'0':''):'.00';
                
                //判断处理后的arr[1]中是否有1有1 则给arr[0]加1
                arr[0]+=RegExp('^1').test(arr[1])?1:0;
                
                //将处理后的arr[0]+arr[1]拼凑回value值
                value=arr[0]+RegExp("[.]\\d{"+figure+"}").exec(arr[1]);
                //返回value
                return value;
                };

//说明 1 该方法有两个参数,参数一 要保留那个浮点数,参数二 要保留的位数 。返回值:要保留的浮点数处理后的结果。要注意的是,返回值类型为 String类型

//说明 2 可将该段代码直接在自己的js文件中使用,也可以新建js文件然后添加引用!

//说明 3 用法:

var num1=123.798756;

var num2=significantFigure(num1,2)

alert(num2);//结果为 123.80

//测试值: 123.99657 , 213.9877...  为保证正确,可以自己再测试下


方法二

简介:一行代码搞定  !

2.1   调用NumberObject.toFixed(num)方法

num 必需。规定小数的位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将用 0 代替。

返回值

返回 NumberObject 的字符串表示,不采用指数计数法,小数点后有固定的 num 位数字。如果必要,该数字会被舍入,也可以用 0 补足,以便它达到指定的长度。如果 num 大于 le+21,则该方法只调用 NumberObject.toString(),返回采用指数计数法表示的字符串。


可以用以上提供的测试数据测试!var str=123.99657; //213.9877     alert(str.toFixed(2));  分别输出124.00 和213.99  【注 返回值为String类型】

posted @ 2014-03-04 12:07  Dream_It_Possible  阅读(969)  评论(0编辑  收藏  举报