浮动数相加不准确问题在于计算机会把浮点数转成二进制 超过计算机存储长度之后 会舍掉 导致转换回来之后数字不精确
// 省略小数点2位之后数字
console.log(parseFloat(0.1+0.2).toFixed(2));
//转成整数类型
function add(m1,m2){
var m=Math.pow(10,2);
return (m1*m+m2*m)/m
}
console.log(add(0.1,0.2));
运算符的优先级:尽量使用()
js舍入误差 运算时会将数据转化为二进制进行运算,输出时又会转化为十进制,在存储过程中会丢弃一些位数,因为会多出数字(4)
方案1:数据量比较小
console.log(parseFloat((0.1+0.2).toFixed(2))) //0.3 toFixed()把数字转换为字符串,结果的小数点后有指定位数的数字
方案2:数据量大,不能舍弃
幂次方的增加 Math.pow(a,b) 为底数 b为指数
0.1+0.2,计算输出0.3的两种方法
运算符的优先级
如果运算符比较多的情况下,以便后续阅读,可以嵌套小括号
舍入误差的情况以及解决方案
js IEEE754 存储浮点型数据类型的标准
0.1+0.2!==0.3
二进制转十进制出现精度丢失