题目来源于牛客网前端专题:
https://www.nowcoder.com/ta/front-end?page=1
https://www.nowcoder.com/ta/js-assessment
一、相加
1.js小数运算出现多位小数如何解决
查了一些资料,一是 JavaScript 浮点数计算的 Bug,另一个是和计算机最终转换成二进制计算有关系
0.1+0.2 == 0.3 //false
解决方法:
function addNum (num1, num2) {
var sq1,sq2,m;
try {
sq1 = num1.toString().split(".")[1].length;
}
catch (e) {
sq1 = 0;
}
try {
sq2 = num2.toString().split(".")[1].length;
}
catch (e) {
sq2 = 0;
}
m = Math.pow(10,Math.max(sq1, sq2));
return (num1 * m + num2 * m) / m;
}
思路:
- trycatch结构获取小数点位数
sq1 = num1.toString().split(".")[1].length
;, - m=10的n次方
- 两数乘以m再做加法,最后除以m