1.浮点数计算的精度问题

68 阅读1分钟

常用的大数运算库包括:

首先遇见这个问题,我的第一反应是看这个浮点数的计算是应用于什么场景,如果是金额的计算, 让后端去处理,这个责任咱们前端不能担着,啊哈哈哈哈

如果是平时的计算,与其考虑什么二进制十进制的转换,直接用库去解决岂不是方便,直接看文档 看看怎么处理的

知识薄弱点: .toFixed() 可把Number 四舍五入为指定小数位数的数字 注意:五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一 注意:(银行家算法)在谷歌浏览器下不适用这个规则

var numObj = 12345.6789;

numObj.toFixed();         // 返回 "12346":进行四舍六入五看情况,不包括小数部分
numObj.toFixed(1);        // 返回 "12345.7":进行四舍六入五看情况

numObj.toFixed(6);        // 返回 "12345.678900":用 0 填充

(1.23e+20).toFixed(2);    // 返回 "123000000000000000000.00"

(1.23e-10).toFixed(2);    // 返回 "0.00"

2.34.toFixed(1);          // 返回 "2.3"

2.35.toFixed(1)           // 返回 '2.4'. Note it rounds up

2.55.toFixed(1)           // 返回 '2.5'. Note it rounds down - see warning above

-2.34.toFixed(1);         // 返回 -2.3(由于操作符优先级,负数不会返回字符串)

(-2.34).toFixed(1);       // 返回 "-2.3"(若用括号提高优先级,则返回字符串)

Number.parseFloat(string)字符串解析成一个浮点数,不满足条件返回NaN

Math.floor() 函数总是返回小于等于一个给定数字的最大整数。

console.log(Math.floor(5.95));
// Expected output: 5
console.log(Math.floor(-5.05));
// Expected output: -6