Никто здесь не предоставил конкретные числа с доказательством точности наихудшего случая с плавающей запятой широта / долгота. Мне нужно было знать это для чего-то, над чем я работаю, так что вот мой анализ на случай, если он кому-то поможет.
Плавающая точка одинарной точности предлагает 24-битную точность в значенииand (двоичная экспоненциальная запись числа). Поскольку вся часть числа становится больше, число битов после десятичной дроби уменьшается. Следовательно, наихудшая точность для широты или долготы - это когда величина настолько далеко от 0, насколько это возможно. Предполагая, что вы привязали свои широты к [-90, 90] и долготы от (-180, 180], наихудший случай будет на экваторе для долготы 180.
В двоичном формате 180 требует 8 битов из 24 доступных битов, оставляя 16 бит после десятичной точки. Следовательно, расстояние между последовательно представленными значениями на этой долготе будет 2 ^ -16 град (приблизительно 1,526E-5). Умножение этого числа (в радианах) на радиус Земли WGS-84 на экваторе (6 378 137 м) дает наихудшую точность:
2^-16 deg * 6,378,137 m * PI rad / 180 deg = 1.6986 m (5.5728 ft).
Тот же анализ по широте / долготе, хранящимся в радианах, дает следующее:
2^-22 rad * 6,378,137 m = 1.5207 m (4.9891 ft)
И, наконец, если вы нормализуете широты в диапазоне [-1, 1] и долготы в диапазоне (-1, 1], то вы можете достичь следующей точности худшего случая:
2^-24 * PI rad * 6,378,137 m = 1.1943 m (3.9184 ft)
Таким образом, хранение широты / долготы в радианах дает вам около 7 дюймов дополнительной точности, а хранение их в нормализованной форме дает вам дополнительную точность порядка 1'8 ", как в худшем случае.
Если при преобразовании между двойной точностью и одинарной точностью вы округлили (вместо усечения), значение одинарной точности будет в пределах половины расстояния между двумя последовательными значениями, вычисленными выше.