我正在进行js-assessment numbers.js练习。我认为我应该将十进制数乘以10乘以数字的幂数(例如0.22 - > 0.22 * 10 ^ 2 = 22)以在js中进行精确的十进制乘法。该解决方案适用于该测试。
我检查了该测试的作者提出的解决方案,但我无法弄清楚该算法是如何工作的。这是代码:
function adjust(num) {
var exponent, multiplier;
if (num < 1) {
exponent = Math.floor( Math.log(num) * -1 );
multiplier = Math.pow(10, exponent);
return { adjusted: num * multiplier, multiplier: multiplier };
}
return { adjusted: num, multiplier: 1 };
}
的证据是什么?
Math.floor(Math.log(num)* -1)
是否足够指数?