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类型】