Координаты не точны при конвертации в int - PullRequest
0 голосов
/ 26 апреля 2011

Я получаю координаты из Facebook в разных местах, и иногда они имеют до 12 знаков после запятой.При преобразовании их в int (* 1E6) я теряю точность, так как он сбрасывает некоторые цифры.

Например, двойной 59.313732591172 представляется как int 59313732.

Как сохранитьточность?Есть ли способ сделать это на Android?Используя класс GeoPoint , я, кажется, застрял с int.

Mike

Ответы [ 2 ]

1 голос
/ 26 апреля 2011

int будет содержать только целые числа, так что вы видите поведение, которое вы просите.

59.313732591172 * 1E6 = 59313732.591172

(int)59313732.591172 = 59313732

Если вам нужно сохранить больше цифр, либо продолжайте использовать double, конвертируйте в long вместо int и умножьте на большее число (например, 1E12)

Так работает приведение числа с плавающей точкой к int / long на любом типизированном языке. Здесь это функция Java, и ничего особенного для Android.

0 голосов
/ 26 апреля 2011

int слишком мало для некоторых чисел (на самом деле, для большинства чисел), поскольку оно имеет только 32 бита.Вместо этого используйте long.Смотри здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...