2015-10-07 39 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代码是要走的路 - 更容易看到你在做什么,如果你分解它 –