Я использую App Lab на Code.org, в котором используются команды JavaScript; однако у них есть собственные элементы управления пользовательского интерфейса. Следовательно, код будет содержать такие команды, как onEvent (), setText () и т. д. И т. Д. Все они приемлемы. Я пытаюсь создать код для сферического закона косинусов, но мой вывод для числа - это NaN. Что это значит и как это исправить?
Часть моего кода ниже:
onEvent("outputgoScrn","click",function(){
setScreen("outputScrn");
setText("output","The distance between these two locations is " + ((Math.acos((Math.cos(a)*(180/Math.PI))*(Math.cos(b)*(180/Math.PI)) + (Math.sin(a)*(180/Math.PI))*(Math.sin(b)*(180/Math.PI)) + (Math.cos(N)*(180/Math.PI))*(180/Math.PI)))) + " miles along the Great Circle.");
});
onEvent("lat1", "change", function() {
var choice = getProperty("lat1","value");
if (choice= = "N") {
a = 90 - ((getNumber("lat1deg")+(getNumber("lat1min")/60)));
}
else if (choice= = "S") {
a = 90 + (getNumber("lat1deg")+(getNumber("lat1min")/60));
}
});
onEvent("lat2", "change", function() {
var choice = getProperty("lat2","value");
if (choice= = "N") {
b = 90 - ((getNumber("lat1deg")+(getNumber("lat1min")/60)));
}
else if (choice= = "S") {
b = 90 + (getNumber("lat2deg")+(getNumber("lat2min")/60));
}
});
onEvent("lon1", "change", function() {
var choice = getProperty("lon1","value");
onEvent("lon2","change",function() {
var choice2 = getProperty("lon2","value");
if (choice= = "E" && choice2= = "E") {
N = (getText(("lon1deg")+(getText("lon1min")/60))) - (getText(("lon2deg")+(getText("lon2min")/60)));
}
else if (choice= = "W" && choice2= = "W") {
N = getText(("lon1deg")+(getText("lon1min")/60)) - getText(("lon2deg")+(getText("lon2min")/60));
}
else if (choice= = "W"&&choice2= = "E") {
N = getText(("lon1deg")+(getText("lon1min")/60)) + getText(("lon2deg")+(getText("lon2min")/60));
}
else if (choice= = "E"&&choice2= = "W") {
N = getText(("lon1deg")+(getText("lon1min")/60)) + getText(("lon2deg")+(getText("lon2min")/60));
}
});
});
Скорее всего, потому что ваше значение в Math.acos() больше 1 или меньше -1. Зарегистрируйте переменную, которую вы получили для (Math.cos(a)*(180/Math.PI))*(Math.cos(b)*(180/Math.PI)∀x∊[-1;1],Math.acos(x)=arccos(x)= the unique y∊[0;π]such thatcos(y)=x из MDN



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


NaN означает «не число». Похоже, вы пытаетесь выполнять арифметические операции со строками. Вам нужно преобразовать вашу строку в число
var text = '42px';
var integer = parseInt(text, 10);
// returns 42
Для получения дополнительных функций синтаксического анализа вы можете проверить ссылку ниже https://gomakethings.com/converting-strings-to-numbers-with-vanilla-javascript/
Это больше похоже на комментарий, чем на ответ.
Свойство NaN представляет собой значение «не числовое». Это свойство указывает, что значение не является допустимым числом. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… Вычисление где-то включало не число, и результат не стал числом.