При хранении широт/долгот, которые обычно имеют формат: 44.087585 (т.е. max 2 числа перед точкой и 6dp), мне нужно беспокоиться о больших децималах?
Java double vs BigDecimal для широты/долготы
Ответ 1
Использование double имеет достаточную точность для точного lat/lon вплоть до дюймов для 6-7 знаков после запятой. В авиации, если используются десятичные градусы, они обычно идут как минимум в 7 знаков после запятой. В наших симуляциях NASA данные lat/lon удваиваются, а все остальные отношения и высота - поплавки. Другими словами, шестое десятичное место для высоты не имеет значения, в то время как шестое десятичное значение для lat/lon для точности субфута. Вы не должны использовать float для lat/lon, если вам нужна точность до подножек.
Вы можете играть в Google Планета Земля, чтобы узнать, какую точность вы получите, разместив маркеры и манипулируя последней десятичной цифрой.
Ответ 2
double
должно быть хорошо для широт/долгот. BigDecimal
становится более важным, когда вы начинаете манипулировать валютой или нуждаетесь в большем контроле над точностью.
Ответ 3
A double
имеет достаточную точность для хранения этого. Однако при отображении пользователям используйте строку формата, например %.6f
, чтобы вы не печатали цифры мусора.
Ответ 4
Если вас беспокоит точность, вам следует, вероятно, пойти с BigDecimal
по многим причинам, описанным в этом сообщении. Тем не менее, double
или float
должны быть в порядке, чтобы хранить то, что вам нужно, с точки зрения возможности удовлетворить диапазон значений, которые вам нужны.
В шестизначных точках точности я не думаю, что double
или float
будет вас трогать, но если вы начнете агрегировать значения каким-либо образом, незначительные неточности могут начать складываться.
Ответ 5
если вы хотите управлять нанороботами в своих нано-путешествиях с помощью nano-GPS - идите на BigDecimal. иначе - float/double достаточно.
Ответ 6
Наихудшая точность хранения как двойного составляет около 3 нм.
Если вы хотите рассчитать его в Java:
Math.ulp((double) 180) * 60 * 1852
3.1582203519064933E-9
В качестве бонуса; наихудшая точность, которую вы получаете от хранения в поплавках, составляет 1,7 метра.