隐式类型转换
如果参与数学运算的某操作数不是数字型,那么js会自动将此操作数转换成数字型
其本质是内部调用 Number() 函数
eg:3 * '4' //12
true + true //2
3 * '2天' //NaN
3 + null //3
注意:加法不会自动转换 3 + '4' //34 3 + '2天' //32天
有关IEEE754
js中一些小数运算不准确:0.1 + 0.2 //0.300000000004
原因:js使用了IEEE754二进制浮点数算术标准 个别小数产生“丢失精度”问题
解决办法:在进行小数运算时,调用数字的 toFixed() 方法保留指定的小数位数
console.log(Number((0.1 + 0.2).toFixed(2))) //0.3
幂和开根号
js中未提供幂计算、开根号运算符。
解决办法:使用Math对象的相关方法进行计算
console.log(Math.pow(2,3)) //2*2*2=8
console.log(Math.sqrt(81)) //9
console.log(Math.sqrt(-81)) //NaN 负数不能开根号
向上取整和向下取整
Math.ceil()向上取整 Math.floor()向下取整
console.log(Math.ceil(2.4)) //3
console.log(Math.floor(2.4)) //2
console.log(Math.ceil(-2.4)) //-2
console.log(Math.floor(-2.4)) //-3
console.log(Math.ceil(2)) //2
console.log(Math.floor(2)) //2