月齢計算式の誤差が気になる

月齢計算アプリ、とりあえず完成 - Throw or Die and ChouChou
いつの間にか2日分もずれていたので、計算式を修正。

  • 修正前
        int mp[] = {0,2,0,2,2,4,5,6,7,8,9,10};
        double phase = (((year - 11) % 19) * 11 + mp[month - 1] + day) % 30;
  • 修正後
        double phase = (((year - 2009) % 19) * 11 + month + day) % 30;
        if((month == 1) || (month == 2)) {
        	phase += 2;
        }

誤差が一日以内になった。