问题: 加减乘除的精度不准确
解决方案/思路:
先将小数转换成整数, 计算后的整数再转换成小数
// 获取小数点后的位数var trs = function(num){var str = num.toString();var point = str.indexOf('.');var pow = str.length - point - 1;return Math.pow(10, pow);}// 两数相加var add = function(a, b) {var m1 = trs(a), m2 = trs(b);var k = m1 > m2 ? m1 : m2;return (a*k + b*k) / k;}var p1 = add(0.1, 0.2);console.log(p1); // 0.3// 两数相减var minus = function(a, b) {var m1 = trs(a), m2 = trs(b);var k = m1 > m2 ? m1 : m2;return (a*k - b*k) / k;}var p2 = minus(0.3, 0.2);console.log(p2); // 0.1// 两数相乘var multiply = function(a, b) {var m1 = trs(a), m2 = trs(b);var k = m1 > m2 ? m1 : m2;return (a*k * b*k) / (k * k);}var p3 = multiply(3, 0.7);console.log(p3); // 2.1// 两数相除var divide = function(a, b) {var m1 = trs(a), m2 = trs(b);var k = m1 > m2 ? m1 : m2;return (a*k / b*k) / (k * k);}var p4 = divide(0.3, 0.2);console.log(p4); // 1.5
运行结果: 
