Итак, я работаю над программой, которая использует координаты в двух форматах: десятичные и градусы, минуты и секунды. У меня есть требование, чтобы пользователь мог переходить между двумя в раскрывающемся списке.
Все это хорошо, но я начал думать, что могу использовать какой-то шаблон, чтобы сохранить, какая версия была первоначально введена и является «правдой», а какая - с потерями. Однако это нужно будет изменить, если кто-то введет 10.123 в десятичном виде, преобразует его в DMS как 10:07:23 (где секунды будут 22,8, если используется десятичное число).
Только для контекста, конверсия ниже, из-за того, что делитель содержит коэффициент 3, он по своей природе будет с потерями.
double decimal = 10.123;
int degrees = (int) Math.floor(decimal);
int minutes = (int) Math.floor((decimal - degrees) * 60d);
int seconds = (int) Math.round(((decimal - degrees) * 60d - minutes) * 60d);
Я чувствую, что шаблон наблюдателя может быть лучшим способом начать, но я буду первым, кто признает, что мое знание шаблонов ограничено.
Рад предоставить больше контекста, если это необходимо.