2015-10-07 4 views
0

Я сделал javascript с простой математикой, но я продолжаю получать NaN (не число) в качестве вывода.Почему я получаю это NaN?

Это исходное уравнение https://upload.wikimedia.org/math/9/5/d/95d176cfd7d8ab9e4df1977f0926d1d0.png

И вот мой код:

<html> 
<head> 
<title></title> 
<script> 
function showheight() { 
var chi = 23 * (Math.PI)/180; 
var vara = 6378137; 
var varb = 6356752.31425; 

var varR = (Math.sqrt(((Math.pow(((Math.pow(vara, 2)) * (Math.cos(chi))), 2)) + (Math.pow(((Math.pow(varb, 2)) * (Math.sin(chi))))))/((Math.pow((vara * (Math.cos(chi))), 2)) + (Math.pow((varb * (Math.sin(chi))), 2))))); 

document.getElementById("radius").innerHTML = varR; 
} 

function addLoadEvent(func) { 
    var oldonload = window.onload; 
    if (typeof window.onload != 'function') { 
    window.onload = func; 
    } else { 
    window.onload = function() { 
     if (oldonload) { 
     oldonload(); 
     } 
     func(); 
    } 
    } 
} 

addLoadEvent(showheight); 
</script> 
</head> 

<body> 
<p id="radius"></p> 
</body> 
</html> 

P.S .: Я новичок.

+0

использование Number() функция. – pedram

+1

Итак, разделите части выражения и отлаживайте его. Что такое 'Math.pow (vara, 2)'? Что относительно '(Math.cos (chi))'. Теперь проверьте '(Math.pow (vara, 2)) * (Math.cos (chi))'. Повторение. –

ответ

1

Проблема здесь

var varR = (Math.sqrt(((Math.pow(((Math.pow(vara, 2)) * (Math.cos(chi))), 2)) + (Math.pow(((Math.pow(varb, 2)) * (Math.sin(chi))))))/((Math.pow((vara * (Math.cos(chi))), 2)) + (Math.pow((varb * (Math.sin(chi))), 2))))); 
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 


Math.pow(((Math.pow(varb, 2)) * (Math.sin(chi)))) 

только один параметр для этого Math.pow

var varR = (Math.sqrt(((Math.pow(((Math.pow(vara, 2)) * (Math.cos(chi))), 2)) + (Math.pow(((Math.pow(varb, 2)) * (Math.sin(chi))), 2)))/((Math.pow((vara * (Math.cos(chi))), 2)) + (Math.pow((varb * (Math.sin(chi))), 2))))); 

дает 6374895,33901514 в ответ - это то, что вы ожидаете?

Demo - JsFiddle

+1

Смотрите [эту скрипку] (http://jsfiddle.net/0bpdvLy6/) для более читаемой версии. – Phylogenesis

+0

Спасибо большое! Я не могу поверить, что я сделал такую ​​глупую ошибку ... –

+1

@ Филогенезисный код - это путь - гораздо легче увидеть, что вы делаете, если сломаете его –

Смежные вопросы