題目來源於牛客網前端專題:
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