skater4
8.12.2014 - 23:51
всем привет. есть колонка типа float, в ней запись со значением 0.0001. запрос select bla-bla-bla-bla where value >= 0.0001 результата не дает, зато при условии value >= 0.000095 все ок. как быть?)
AllesKlar
9.12.2014 - 01:45
float не сравнивают на =
float заданный явно и float, полученный расчётно не могут быть равны абсолютно. Ни в одном из языков программирования.
Причина в формате хранения float в памяти.
При сравнении на равенство float наужно использовать следующую формулу
abs( a -b ) < допустимый_предел_погрешности
_____________
[продано копирайтерам]
Invis1ble
9.12.2014 - 03:21
для начала надо написать, какая СУБД используется
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
AllesKlar
9.12.2014 - 05:48
depp
Цитата (depp @ 9.12.2014 - 02:54) |
numeric |
Цитата |
Величины типов DECIMAL и NUMERIC хранятся как строки, а не как двоичные числа с плавающей точкой, чтобы сохранить точность представления этих величин в десятичном виде. При этом используется по одному символу строки для каждого разряда хранимой величины, для десятичного знака (если масштаб > 0) и для знака `-' (для отрицательных чисел). |
Думаю, дальше объяснять не нужно.
_____________
[продано копирайтерам]
AllesKlar
9.12.2014 - 07:28
depp
Цитата |
Величины типов DECIMAL и NUMERIC хранятся как строки |
Грубо так: 65536 - 2 байта. Но в памяти оно будет занимать 5 байт (по одному байту на строковый символ)
Ну и сами механизмы сравнения, поиска и т.д. дадут все прелести (вернее недостатки) строковых данных
_____________
[продано копирайтерам]
AllesKlar
numeric как раз и придуман для таких задач, как у топикстартера. не вижу смысла в извращениях с float.
AllesKlar
9.12.2014 - 09:28
Цитата (depp @ 9.12.2014 - 08:43) |
AllesKlar numeric как раз и придуман для таких задач, как у топикстартера. не вижу смысла в извращениях с float. |
оно, как говорится, хозяин-барин.
Кто борется за ресурсы, тот извращается с float, кто борется за легкость разработки, тот использует numeric
Некоторые вообще дату в стрингах хранят.
Ну да ладно, думаю, что ТС получил исчерпывающий ответ на свой вопрос, и теперь выбор за ним.
_____________
[продано копирайтерам]
skater4
12.12.2014 - 00:14
всем спасибо!
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.