我有一个场景,我需要比较两个数字,并确定第二个最重要的数字是否有差异。这些数字是十进制的,有10个位置。
0.0000098765
0.0000098766
// Change = false
0.0000098765
0.0000099765
// Change = true
0.0000098765
0.0000198765
// Change = true
查看上面的示例并重新思考我想知道第2或第1位有效数字何时发生变化的问题。
我知道怎么回事但是我不知道如何处理这个问题。
function significantDigitChange(number1, number2) {
var shift1 = number1 * Math.pow(10,10);
var shift2 = number2 * Math.pow(10,10);
if ( shift1.toString().slice(0,2) != shift2.toString().slice(0,2) ) {
return true
} else {
return false
}
}
答案 0 :(得分:0)
创建一个函数来将(正)数字截断为某些有效数字:
function toPrecision(n, precision) {
var scale = 10 ** (Math.floor(Math.log10(n)) - precision + 1);
return Math.trunc(n / scale) * scale;
}
在两个值上使用它并比较相等:
function significantDigitChange(n1, n2) {
return toPrecision(n1, 2) !== toPrecision(n2, 2);
}