function add(num1, num2){
let r1, r2, m;
r1 = (''+num1).split('.')[1].length;
r2 = (''+num2).split('.')[1].length;
m = Math.pow(10,Math.max(r1,r2));
return (num1 * m + num2 * m) / m;
}
console.log(add(0.1,0.2)); //0.3
console.log(add(0.15,0.2256)); //0.3756
https://github.com/dwqs/blog/issues/17
■对于 return 、break、continue 等语句,如果后面紧跟换行,解析器一定会自动在后面填充分号(;)
等同于
所以该函数返回 undefined。
■ NaN NaN 是 Not a Number 的缩写,JavaScript 的一种特殊数值,其类型是 Number,可以通过 isNaN(param) 来判断一个值是否是 NaN。
ES6 中,isNaN() 成为了 Number 的静态方法:Number.isNaN().
■ 浮点型处理 JavaScript 中的浮点数采用IEEE-754 格式的规定,这是一种二进制表示法,可以精确地表示分数,比如1/2,1/8,1/1024,每个浮点数占64位。但是,二进制浮点数表示法并不能精确的表示类似0.1这样 的简单的数字,会有舍入误差。 对于保证浮点数计算的正确性,有两种常见方式。 一是先升幂再降幂.
二是是使用内置的 toPrecision() 和 toFixed() 方法,注意,方法的返回值字符串。