1 、tofixed方法
toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。例如将数据Num保留2位小数,则表示为:toFixed(Num);但是其四舍五入的规则与数学中的规则不同,使用的是银行家舍入规则,银行家舍入:所谓银行家舍入法,其实质是一种四舍六入五取偶(又称四舍六入五留双)法。具体规则如下:
简单来说就是:四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一。通过谷歌测试:前两句是对的,四舍六入五考虑,五后非零就进一,五后为零的情况和前面的数字有关,但不仅仅是奇偶的关系;而且五后为零后面还有非零也进一,总之在计算的时候可能这就不是我们想要的了,不符合数学规律;
先走一波测试(谷歌):
12.050.toFixed(1) "12.1" 12.150.toFixed(1) "12.2" 12.250.toFixed(1) "12.3" 12.350.toFixed(1)//////// "12.3" 12.450.toFixed(1)//////// "12.4" 12.550.toFixed(1) "12.6" 12.650.toFixed(1) "12.7" 12.750.toFixed(1) "12.8" 12.850.toFixed(1)///////// "12.8" 12.950.toFixed(1)///////// "12.9"
12.9501.toFixed(1)
2 、Math.round()方法
例如:对于X进行保留两位小数的处理,则可以使用Math.round(X * 100) / 100.进行处理
function mathfloat(num, n) { n = n ? parseInt(n) : 0; if(n <= 0) { return Math.round(num); } num = Math.round(num * Math.pow(10, n)) / Math.pow(10, n); //四舍五入 num = Number(num).toFixed(n); //补足位数 return num; };