хранение двойных значений в SQLite: как гарантировать точность?

у меня есть проблема с двойными значениями, которые я должен сохранить в размещенной sqlite базе данных андроида. так как эти двойные значения представляют значения gps (lat и СПГ), я действительно NEED абсолютная точность вниз к 9-му числу после запятой.

теперь у меня есть таблица как это:

CREATE TABLE x REAL lng;

и вставьте sth (hardcoded) как:

INSERT INTO x lng = '1.0';

и когда чтение СПГ от этой таблицы в немного (Java) удваивает переменную, я получаю значение как "0,999956837" - это представляет значения, довольно бесполезные мне.

существует ли способ осуществить точность, мне нужно кроме хранения значений как "текстовые" поля (что сделало бы дорогие броски необходимыми) или хранение их как целые числа (значение, что я должен умножаться/делить в каждом write/read-op)?

7
задан xenonite 21 June 2010 в 10:20
поделиться

2 ответа

SQLite является безтиповым, то есть все представление записывается как текст, возможно, api обертки делает какие-то преобразования, о которых вы не знаете, чтобы получить такие результаты.

Если вам нужно хранить данные в виде строки сделайте это.

Просто когда вы считываете двойное число, убедитесь, что вы сохранили его в правильном формате, вы можете использовать getDouble на колонке.

13
ответ дан 6 December 2019 в 11:45
поделиться

double имеет около 17 десятичных цифр точности, поэтому, если вам нужно 9 цифр, проблем возникнуть не должно (при условии, что вы не выполняете никаких сложных вычислений с этими значениями). Просто убедитесь, что вы никогда не используете float , потому что у него всего около 7 цифр точности.

Вы также должны убедиться, что понимаете , как работают двоичные числа с плавающей запятой , и что это всегда приводит к тому, что кажущиеся "круглые" значения слегка отклоняются, что просто не имеет значения. для большинства приложений (включая ваше), если оно находится где-то в 17-м десятичном разряде. См. Также эту ссылку для получения информации об альтернативах для приложений, где это имеет значение.

4
ответ дан 6 December 2019 в 11:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: