Некорректные результаты при работе с часами, минутами - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте ALL! Столкнулся с проблемой приведения типов в программе:
using System;
 
namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            DateTime dt = DateTime.Today;
            int year = dt.Year;
            int month = dt.Month;
            int day = dt.Day;
            double hour = (double)dt.Hour;
            double minute = (double)dt.Minute;
            double second = (double)dt.Second;
            JulianFromGrigorian(year, month, day, hour, minute, second);
        }
        private static void JulianFromGrigorian (int year, int month, int day, double hour, double minute, double second)
        {
            int a, m, y, jdn;
            double jd;
            a = (14 - month) / 12;
            y = year + 4800 - a;
            m = month + (12 * a) - 3;
 
            jdn = day + (((153 * m) + 2) / 5) + (365 * y) + (y / 4) - (y / 100) + (y / 400) - 32045;
            jd = jdn + ((hour - 12) / 24.0) + (minute / 1440.0) + (second / 86400.0);
 
            Console.WriteLine("Julian Day = " + jd.ToString());
            Console.ReadLine();
        }
    }
}
В выражении jd = jdn + ((hour - 12) / 24.0) + (minute / 1440.0) + (second / 86400.0); (minute / 1440.0) выдаёт результат = 0 (second / 86400.0) выдаёт результат = 0 (hour - 12) / 24.0) выдаёт результат -0.5 что я сделал неправильно? когда в исходных данных прописываю:
double hour = 18.0;
double minute = 18.0;
double second = 18.0;
или любые другие числа всё работает отлично. Как я понимаю проблема в свойствах dt.Hour, dt.Minute, dt.Second; MSDN пишет про них:

Hour

Тип: System.Int32 Компонент, представляющий час, выраженный как значение от 0 до 23.

Minute

Значение свойства Тип: System.Int32 Компонент, представляющий минуту, выраженный как значение от 0 до 59.

Second

Тип: System.Int32 Компонент, представляющий секунды, выраженный как значение от 0 до 59. Помогите разобраться в чём проблема

Решение задачи: «Некорректные результаты при работе с часами, минутами»

textual
Листинг программы
            DateTime dt = DateTime.Now;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.556 из 5
Похожие ответы