Программа должна переводить градусы минуты секунды в дробные градусы и обратно без потери точности вычисления, код конвертирования следующий:
Градус минута секунда>Дробные градусы
Drobniy=Gradus+Minuta/60+Secunda/3600;
Дробные градусы>Градус минута секунда
Gradus=floor(Drobniy+0.5);
Minuta=floor((((Drobniy-Gradus)*60))+0.5);
Secunda=((Drobniy-Gradus)*60-Minuta)*60;
При вычислении на выходе получаю следующий "баг":
Ввожу в программу значение 12 градусов 12 минут 12 секунд
Программа переводит их в дробные градусы, получаю 12,2034721374512
Затем переводит обратно в формат ГМС, получаю 12 градусов 12 минут 11,9984436035156 секунд
Как скорректировать код, чтобы на выходе, после прямого и обратного конвертирования, получались те же самые числа в градусах, минутах и секундах, что и на входе? При этом, в случае ввода на входе дробных секунд, они должны сохраняться на выходе в том же самом виде.
Градус минута секунда>Дробные градусы
Drobniy=Gradus+Minuta/60+Secunda/3600;
Дробные градусы>Градус минута секунда
Gradus=floor(Drobniy+0.5);
Minuta=floor((((Drobniy-Gradus)*60))+0.5);
Secunda=((Drobniy-Gradus)*60-Minuta)*60;
При вычислении на выходе получаю следующий "баг":
Ввожу в программу значение 12 градусов 12 минут 12 секунд
Программа переводит их в дробные градусы, получаю 12,2034721374512
Затем переводит обратно в формат ГМС, получаю 12 градусов 12 минут 11,9984436035156 секунд
Как скорректировать код, чтобы на выходе, после прямого и обратного конвертирования, получались те же самые числа в градусах, минутах и секундах, что и на входе? При этом, в случае ввода на входе дробных секунд, они должны сохраняться на выходе в том же самом виде.