У меня есть столбец с двойной точностью в моей базе данных под названием «позиция».postgres query на столбце двойной точности не возвращает правильные результаты
Если у меня есть строка со значением в этом столбце,: 0.564593301435407
И у меня есть запрос, который имеет WHERE заявление вроде следующего:
WHERE "position" >= 0.564593301435407
(т.е. Запрашивание больше чем или равны этому точному значению)
Это НЕ возвращает эту колонку.
Зачем это было?
О, вы уже писали то же самое. Так что я удалил свой обман. +1, и я взял на себя смелость и добавил ссылку на руководство. –
Да, это проблема точности с плавающей запятой. Если я округлю числа до 4-5 знаков после запятой, это решит большинство проблем с точными сравнениями, или я все еще рискую проблемами, потому что он все еще хранится как плавающая точка? –
Одна из проблем заключается в том, что числа с плавающей запятой не подходят для точного хранения произвольных десятичных знаков. Интересное чтение - http://www.postgresql.org/docs/9.1/static/datatype-numeric.html#DATATYPE-FLOAT. Лично для меня это бесполезно. Меня больше интересует точность хранения и сравнения для десятичных чисел, чем любые преимущества, которые могут иметь плавающие точки. –