Я использовал Math.pow()
для вычисления экспоненциального значения в моем проекте.Math.pow() не дает точного ответа
Теперь, для конкретных значений, таких как Math.pow(3,40)
, он возвращает 12157665459056929000
.
Но когда я попробовал такое же значение, используя научный калькулятор, он возвращает 12157665459056928801
.
Затем я попытался пройти цикл до экспоненциального значения:
function calculateExpo(base,power){
base = parseInt(base);
power = parseInt(power);
var output = 1;
gameObj.OutPutString = ''; //base + '^' + power + ' = ';
for(var i=0;i<power;i++){
output *= base;
gameObj.OutPutString += base + ' x ';
}
// to remove the last comma
gameObj.OutPutString = gameObj.OutPutString.substring(0,gameObj.OutPutString.lastIndexOf('x'));
gameObj.OutPutString += ' = ' + output;
return output;
}
Это также возвращает 12157665459056929000
. Есть ли какие-либо ограничения на тип Int в JS?
Кому нужно определить, является ли этот 'научный калькулятор подлинным или' math.pow'? Попробовали ли вы третий метод? Если есть какой-либо предел, он применяется к результату научного калькулятора, то есть меньшее значение –
В этом случае научный калькулятор правильный. –
@JosephMyers По крайней мере, число нечетное, что намекает на то, что он будет более правильным ... – sashkello