# File AlmanacForRuby/AlmanacDateTime.rb, line 73
  def ajd_to_ad(ajd, of)

    float_ajd = ajd.to_f
    float_of = of.to_f
    float_jd = self.jd.to_f

    # ユリウス日の時分秒の値(小数点以下の部分)から、
    # 時(int_hour)・分(int_minute)・秒(int_second)を求める。
    float_hour_minute_second = float_ajd + 0.5 + float_of
    float_hour_minute_second = float_hour_minute_second \
                               - float_hour_minute_second.to_i.to_f

    # 時(int_hour)算出
    float_hour_minute_second = float_hour_minute_second * DAY_TO_HOUR
    int_hour = float_hour_minute_second.to_i

    # 分(int_minute)算出
    float_hour_minute_second = float_hour_minute_second - int_hour.to_f
    float_hour_minute_second = float_hour_minute_second * HOUR_TO_MINUTE
    int_minute = float_hour_minute_second.to_i

    # 秒(int_second)算出
    float_hour_minute_second = float_hour_minute_second - int_minute.to_f
    float_hour_minute_second = float_hour_minute_second * MINUTE_TO_SECOND
    int_second = float_hour_minute_second.to_i

    # ユリウス日の年月日の値(小数点以下除くの部分)から、
    # 年(int_year)・月(int_month)・日(int_day)を求める。
    float_hour_minute_second = float_ajd + 0.5 + float_of
    float_year_month_day = float_hour_minute_second.to_i.to_f
    float_hour_minute_second = float_hour_minute_second - float_year_month_day

    # 変換対象が、ユリウス暦に存在する日付か
    # グレゴリオ暦(New Style)以降に存在する日付かにより、補正を行う
    float_Correction_year_month_day = float_year_month_day
    if float_year_month_day >= NEW_STYLE_START_JD
      float_Correction_work \
        = ((float_year_month_day - 1867216.25) / 36524.3).to_i.to_f
      float_Correction_year_month_day = float_year_month_day + 1.0 \
                                        + float_Correction_work \
                                        - (float_Correction_work / 4).to_i.to_f
    end

    float_Correction_year_month_day \
      = float_Correction_year_month_day + 1524.0
    float_Correction_year \
      = ((float_Correction_year_month_day - 122.1) / AVERAGE_YEAR_DAYS).to_i.to_f

    float_Correction_day_work = (AVERAGE_YEAR_DAYS * float_Correction_year).to_i.to_f

    float_month_work = 0.0
    float_month_work_sub_1 \
      = (float_Correction_year_month_day - float_Correction_day_work) / AVERAGE_MONTH_DAYS
    float_month_work_sub_2 = float_month_work_sub_1.to_i.to_f
    float_month_work_sub_3 = 0.0

    float_month_work = float_month_work_sub_2
    if float_month_work_sub_1 <= 0.0
      float_month_work_sub_3 \
        = (float_month_work_sub_1 - float_month_work_sub_2) * (-1)
      if float_month_work_sub_3 >= 0.5
        float_month_work -= 1.0
      end
    end

    # 日(int_day)算出
    int_day = float_Correction_year_month_day.to_i \
              - float_Correction_day_work.to_i \
              - (AVERAGE_MONTH_DAYS * float_month_work).to_i \
              + float_hour_minute_second.to_i

    # 月(int_month)算出
    if float_month_work < 13.5
      float_month = float_month_work - 1.0
    else
      float_month = float_month_work - 13.0
    end
    int_month = float_month.to_i

    # 年(int_year)算出
    if float_month > 2.5
      int_year = float_Correction_year.to_i - 4716
    else
      int_year = float_Correction_year.to_i - 4715;
    end

    # 閏年補正
    if int_month == 2 && int_day == 29
      if int_year % 100 == 0 && int_year % 400 != 0
        int_month = 3;
        int_day = 1;
      end
    end

    answer_almanac_date_time \
      = AlmanacDateTime.civil(int_year, \
                              int_month, \
                              int_day, \
                              int_hour, \
                              int_minute, \
                              int_second, of)

    return answer_almanac_date_time

  end