2012-06-20 10 views
1

이 수식을 사용하여 일광 시간을 계산하려는이 표현식에 대한 숫자 값을 가져 오는 데 문제가 있습니다. 이 표현을 으로 평가할 때 NaN을주는 것으로 끝납니다.일광 시간 계산

줄리안 데이를 의미합니다. (예를 들어 오늘날 J = 172)

어떤 도움은 매우 가치있는 것, 감사

P = Math.asin(0.39795*Math.cos(0.2163108 + 2*Math.atan(0.9671396*Math.tan[0.00860*(J-186)]))); 
+0

있는지 확인

(그것을 테스트하기 위해 나는 172 J 변경) 귀하의 경우와 같은 혼동을 피하기 위해 코드를 여러 줄로 나누십시오. 시험해 보면 "오류"가 어디서 왔는지 알 수 있습니다. –

+0

@ NunoGonçalves..i,이 부분에서 오는 "* Math.tan [0.00860 * (J-186)]" – Kunal

+0

아마 J에 문제가있을 수 있습니다 ... 좋은 가치를 반환하는지 확인하십시오 ... – LolCat

답변

1

나는 그것을 시도하고 대답을 얻었다 ... :

P = Math.Asin(0.39795 * Math.Cos(0.2163108 + 2 * Math.Atan(0.9671396 * Math.Tan(0.00860 * (J- 186))))); 

I 변경된 "["에 "("Math.tan에 [0.00860 * (J-186)])))

012,351 6,

그리고이 결과를 가지고 ... 난 항상 내가 문제가있을 때 P는 이러한 상황에서 더블

0
//GET LATITUDE 
      latitude = document.getElementById("latit").value; 
      L = latitude; 

      //GET JULIAN DAY 
       Now=new Date(); 
       Now_Y=Now.getYear(); 
       if (Now_Y < 70) { Now_Y=Now_Y*1+2000; } 
       if (Now_Y < 1900) { Now_Y=Now_Y*1+1900; } 
       Now_M=Now.getMonth();      // Jan-Dec = 0-11 
       Now_D=Now.getDate();      // 1-31 
       Now_H=Now.getHours();      // 0-23 
       Now_N=Now.getMinutes();     // 0-59 
       Now_S=Now.getSeconds();     // 0-59 
       Now_U=Now.getMilliseconds();    // 0-999 
       Now_T=Now.getTime();      // miliseconds since 1970-01-01 
       Now_O=Now.getTimezoneOffset();   // in minutes 
       Now_W=Now.getDay();      // weekday: Sun-Sat = 0-6 
       Now_J=         // day of year (Julian day) 
       Math.round((       // ...account for DST 
       (new Date(Now_Y,Now_M,Now_D))   // ...most recent midnight 
       - (new Date(Now_Y,0,0)))    // ...Dec. 31st midnight 
       /86400000);        // ...mili-seconds per day 
       Gmt_N=Now_N+Now_O; 
       Gmt=new Date(Now_Y,Now_M,Now_D,Now_H,Gmt_N,Now_S); 
       Gmt_Y=Gmt.getYear(); 
       if (Gmt_Y < 70) { Gmt_Y=Gmt_Y*1+2000; } 
       if (Gmt_Y < 1900) { Gmt_Y=Gmt_Y*1+1900; } 
       Gmt_M=Gmt.getMonth();      // Jan-Dec = 0-11 
       Gmt_D=Gmt.getDate();      // 1-31 
       Gmt_J=         // day of year (Julian day) 
       Math.round((       // ...account for DST 
       (new Date(Gmt_Y,Gmt_M,Gmt_D))   // ...most recent midnight 
       - (new Date(Gmt_Y,0,0)))    // ...Dec. 31st midnight 
       /86400000);        // ...mili-seconds per day 
       alert("Julian Day: "+Gmt_J); 

      J = Gmt_J; 

      P = Math.asin(0.39795*Math.cos(0.2163108 + 2*Math.atan(0.9671396*Math.tan(0.00860*(J-186))))); 

      alert("P is : "+P) 

      pi = 3.14159265; 

      var D = 24 - (24/pi)*Math.acos((Math.sin(0.8333*pi/180) + Math.sin(L*pi/180)*Math.sin(P))/ (Math.cos(L*pi/18 

0)*Math.cos(P)));