Лучший шаблон для преобразования между типами с потенциальными потерями, ie Координата в DMS - PullRequest
0 голосов
/ 25 марта 2020

Итак, я работаю над программой, которая использует координаты в двух форматах: десятичные и градусы, минуты и секунды. У меня есть требование, чтобы пользователь мог переходить между двумя в раскрывающемся списке.

Все это хорошо, но я начал думать, что могу использовать какой-то шаблон, чтобы сохранить, какая версия была первоначально введена и является «правдой», а какая - с потерями. Однако это нужно будет изменить, если кто-то введет 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);

Я чувствую, что шаблон наблюдателя может быть лучшим способом начать, но я буду первым, кто признает, что мое знание шаблонов ограничено.

Рад предоставить больше контекста, если это необходимо.

...