视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
怎样让js数值四舍五入
2020-11-27 20:13:30 责编:小采
文档


1.toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。

NumberObject.toFixed(num)

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

当num超过20的时候,js会出错,这东西好像只能传一个数字进去,字符串会爆不是一个方法

方法存在的bug:

Number(13.35).toFixed(1); //13.3 
Number(0.055).toFixed(1); //0.1
原因:原生toFixed(x)截取小数的时候会有误差
//如果要修改这个缺陷,可以把js中的number类型的tofixed方法重写。

2.Math.round() 方法可把一个数字舍入为最接近的整数。

Math.round(x)

x为需要计算的数值。该方法返回与给出的数值表达式最接近的整数。

方法个存在的bug

Math.round(num * Math.pow(10, 2)) / Math.pow(10, 2); //num是待处理数字Math.pow(10, 2)=100
当num = 10.10500时,计算上述表达式可得10.11。(正常)
当num = "10.50000"时(注意这里是字符串),计算上述表达式可得10.5。(damn it,小数点后位数不对!)
原因:当num是字符串,进行乘法操作时,进行了类型转换,后缀零被丢弃了,导致位数不足,这个时候我们就应该进行补0

解决方案:

var iTofixed =function(num,fractionDigits) {
return (Math.round(num*Math.pow(10,fractionDigits))/Math.pow(10,fractionDigits)+Math.pow(10,-(fractionDigits+1))).toString().slice(0, -1)
};
iTofixed('13.5000',3);
//"13.500"

下载本文
显示全文
专题