下面的JavaScript代码试图通过使用毕达哥拉斯定理计算与直角三角形相关的值。我在检测在执行计算之前执行的各种输入组合的部件方面存在问题。它只是一系列if
语句,它们都非常相似,但最后一个语句不会执行。
I made a fiddle,如果你们中的一些人想要乱用代码。
这是我遇到问题的功能:
function drawNumbers() {
if(cathetusAKnown) {
cathetusA.value = cathetusANumber;
}
if(cathetusBKnown) {
cathetusB.value = cathetusBNumber;
}
if(hypotenuseKnown) {
hypotenuse.value = hypotenuseNumber;
}
if(angleAKnown) {
angleA.value = angleANumber;
}
if(angleBKnown) {
angleB.value = angleBNumber;
}
}
function calculate() {
updateNumbers();
//If CathetusA and B are known, calculate the rest
if(cathetusAKnown && cathetusBKnown) {
if(!hypotenuseKnown) {
calcHypotenuse();
}
if(!angleAKnown) {
calcAngleA();
}
if(!angleBKnown) {
calcAngleB();
}
}
//If CathetusA and the hypotenuse are known, calculate the rest
if(cathetusAKnown && hypotenuseKnown) {
if (!cathetusBKnown) {
calcCathetusB();
}
if(!angleAKnown) {
calcAngleA();
}
if(!angleBKnown) {
calcAngleB();
}
}
//If CathetusB and the hypotenuse are known, calculate the rest
if(cathetusBKnown && hypotenuseKnown) {
if (!cathetusAKnown) {
calcCathetusA();
}
if(!angleAKnown) {
calcAngleA();
}
if(!angleBKnown) {
calcAngleB();
}
}
drawNumbers();
}
答案 0 :(得分:1)
最后一个案例(计算cathetus给定的cathetus B和斜边)有点好,但公式错了。
鉴于hyp² = a² + b²
你知道a = sqrt(hyp² - b²)
而你正在计算相反的(sqrt(b² - hyp²)
),这将导致NaN
,因为你将占据广场负数的根。
另一个类似的情况也出现了另一个错误(它没有给出NaN
,但结果是错误的,因为你添加斜边的平方和直角。