Сначала вы ошибетесь в этой строке:
var yourAnswerMultiplier = yourAnswerNum.toString().split(".");
Если вы зарегистрируете это значение, например, для ввода "314"
, вы получите массив ["314"]
(ваш, вероятно, требуемый .split("")
),Переходя оттуда, yourAdjustedAnswer
будет бесконечностью (так как 10 ** 314 слишком велико и просто переполняется).Это терпит неудачу, что явно не то, что вы хотели.
В качестве рекомендации попробуйте выполнить пошаговое выполнение для простого примера, используя инструменты разработчика вашего браузера / IDE, и внимательно посмотрите, соответствует ли каждый шаг вашим ожиданиям..
@ Ответ Орхана Алиханова также может дать некоторые подсказки.
function pi() {
var piWithoutDecimals = 31415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679;
var yourAnswer = prompt("Pi Bonus! Half of a point for every digit of pi that you can write from memory!");
var yourAnswerNum = parseInt(yourAnswer);
var yourAnswerMultiplier = yourAnswerNum.toString().split(".");
var yourAdjustedAnswer = yourAnswerNum*(10**parseInt(yourAnswerMultiplier));
console.log(yourAdjustedAnswer)
var yourAdjustedAnswerCount = yourAdjustedAnswer.toString().length;
var yourSectionOfpiWithoutDecimals = piWithoutDecimals.toString().substring(0,parseInt(yourAdjustedAnswer-1));
if(yourSectionOfpiWithoutDecimals==yourAnswerNum) {
alert("Nice!! You listed "+yourAdjustedAnswerCount+" digits of Pi, and so you get "+Math.floor((yourAdjustedAnswerCount)/2)+" points!")
points+=Math.floor((yourAdjustedAnswerCount)/2);
} else { alert("Good try, but you got one or more digits incorrect.") }
}
pi()