2015-10-07 74 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

請參閱[this fiddle](http://jsfiddle.net/0bpdvLy6/)獲取更具可讀性的版本。 – Phylogenesis

+0

非常感謝!我無法相信自己犯了這樣一個愚蠢的錯誤... –

+1

@Phylogenesis代碼是要走的路 - 更容易看到你在做什麼,如果你分解它 –