Некорректные результаты при работе с часами, минутами - C#
Формулировка задачи:
Здравствуйте ALL!
Столкнулся с проблемой приведения типов в программе:
В выражении 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
что я сделал неправильно?
когда в исходных данных прописываю:
или любые другие числа всё работает отлично.
Как я понимаю проблема в свойствах dt.Hour, dt.Minute, dt.Second;
MSDN пишет про них:
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(); } } }
double hour = 18.0; double minute = 18.0; double second = 18.0;
Hour
Тип: System.Int32 Компонент, представляющий час, выраженный как значение от 0 до 23.Minute
Значение свойства Тип: System.Int32 Компонент, представляющий минуту, выраженный как значение от 0 до 59.Second
Тип: System.Int32 Компонент, представляющий секунды, выраженный как значение от 0 до 59. Помогите разобраться в чём проблемаРешение задачи: «Некорректные результаты при работе с часами, минутами»
textual
Листинг программы
DateTime dt = DateTime.Now;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д