对于更大的数组-返回NaN而不是数字

时间:2018-10-10 03:19:11

标签: javascript arrays

我应该编写一个以字符串形式接收两个数字的函数。将第一个字符串带到第二个字符串的幂;返回值应该是结果的最后一位。

例如,lastDigit("5", "2")将返回5,因为5等于2的幂等于25,而最后一位是5。

它这样写我的函数:

   const lastDigit = (str1, str2) => {  
      const [head, ...tail] = Math.pow(parseInt(str1), parseInt(str2)).toString().split("").map(str => parseInt(str)).reverse();
      return head;
      }

对于较小的数字,此功能正常工作。但是,如果数字变高,它将以某种方式返回

  

NaN

如何解决?

2 个答案:

答案 0 :(得分:4)

问题在于某些数字,例如53到230的幂,对于Javascript来说太大了:它们会给您Infinity

console.log(53 ** 230);

然后,在您的代码中,当您尝试parseInt中的y之类的字母(如Infinity时,它将失败并给您{{1 }}。

作为一种解决方法,您可以一次将第一个数字乘以一个,通过使用模10来仅提取一个位置,然后根据需要重复多次:

NaN

答案 1 :(得分:0)

function _calcPower(){
				var value = document.getElementById('value').value;
				var power = document.getElementById('power').value;
				var result = "Value :"+value+" Power :"+power+" =   "+Math.pow(value,power)+";<br>TO Integer : "+parseInt(Math.pow(value,power))+"<br><br>";
				document.getElementById('result').innerHTML = document.getElementById('result').innerHTML + result;
				console.log(parseInt(Math.pow(value,power)));
			}
<input type="text" id="value" placeholder="Number" />
<input type="text" id="power" placeholder="Power" />
<input type="button" value="Calc" onclick="_calcPower();"/>
<div id="result"></div>

某些情况下Math.pow()将返回无穷大。因此,在将字符串转换为整数时,它将显示NaN。签出我的代码。