1

この式を使用して日照時間を計算しようとしているこの式の数値を取得するのに問題があります。この式を評価すると、最終的に NaN が返されます。

J はユリウス日を表します。(たとえば、今日の J = 172;)

どんな助けも非常に価値があります、ありがとう

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

2 に答える 2

1

私はそれを試して答えを得ました...:

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

Math.tan[0.00860*(J-186)])))の"[""("に変更しました

そして、結果が得られました...(テストするために、Jを172に変更しました)

P がDoubleであることを確認してください

于 2012-06-20T19:29:34.110 に答える
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)));
于 2012-06-20T19:33:42.640 に答える