前端知识学习

在JavaScript中,有一个问题一直被没有很好地解决,就是小数点保留指定的位数,也就是我们通常说的Math.Round()函数。

首先,JavaScript有自带的Math.Round()函数,能够对一个浮点数进行四舍五入,但是返回的结果是个整数,无法精确到小数点后。

Number.toFixed()方法,能保留小数点后面的指定位数,但如果执行2.1.toFixed(2)的话,会返回2.10,而不是我们期待的2.1,所以,这个方法也不太可取。

最近我发现一个很简单的方法,假设我要对0.105进行四舍五入并保留两位小数,如果直接调用Math.Round()的话,结果是0,如果直接调用.toFixed(2)方法的话,会返回0.10,最简单有效的方法就是对0.105先乘以100,再调用Math.Round(),然后再除以100,就OK了。

var number = 0.105;
alert(Math.round(number * 100) / 100);

网页弹出0.11

举一反三,如果你想保留三位小数,就是

Math.round(number * 1000) / 1000

如果你想转换为百分比,再保留两位小数,就是

(Math.round(number * 10000) / 100) + '%'