Поле типа Float: глюки с дробными числами
Поле типа Float: глюки с дробными числами
Доброго времени суток.
InterBase 5.5, в таблице - поле типа Float. Из программы на Delphi пытаюсь писать значение в поле:
IBTable1.FieldByName('MyField').AsFloat:=StrToFloat(Edit1.Text).
Если в Edit1 введено целое число, то все сохраняется корректно, если же дробное - получается какое-то огромное совершенно левое число.
Пытался добавлять и редактировать через IBQuery/SQL и прямо из DBGrid - то же самое.
Как это исправить?
InterBase 5.5, в таблице - поле типа Float. Из программы на Delphi пытаюсь писать значение в поле:
IBTable1.FieldByName('MyField').AsFloat:=StrToFloat(Edit1.Text).
Если в Edit1 введено целое число, то все сохраняется корректно, если же дробное - получается какое-то огромное совершенно левое число.
Пытался добавлять и редактировать через IBQuery/SQL и прямо из DBGrid - то же самое.
Как это исправить?
float практически не пригоден к использованию из-за низкой точности. см.
www.ibase.ru/devinfo/round.htm
плюс известную статью про вещественные числа
http://www.delphikingdom.com/asp/viewit ... alogid=374
p.s. кроме того, в 5.5 есть глюк, который приводит к порче базы, поэтому надо апгрейдиться до 5.6. И еще в 5.x и 6.0 есть +1 один глюк, который тоже приводит к порче базы. Это я на всякий случай, если вдруг на 6.0 решишь перейти.
www.ibase.ru/devinfo/round.htm
плюс известную статью про вещественные числа
http://www.delphikingdom.com/asp/viewit ... alogid=374
p.s. кроме того, в 5.5 есть глюк, который приводит к порче базы, поэтому надо апгрейдиться до 5.6. И еще в 5.x и 6.0 есть +1 один глюк, который тоже приводит к порче базы. Это я на всякий случай, если вдруг на 6.0 решишь перейти.
Спасибо. Проблема решилась путем замены типа поля с Float на Double.kdv писал(а):float практически не пригоден к использованию из-за низкой точности. см.
www.ibase.ru/devinfo/round.htm
плюс известную статью про вещественные числа
http://www.delphikingdom.com/asp/viewit ... alogid=374
А все эти переходы как делаются? Я просто с interbase недавно работаю.p.s. кроме того, в 5.5 есть глюк, который приводит к порче базы, поэтому надо апгрейдиться до 5.6. И еще в 5.x и 6.0 есть +1 один глюк, который тоже приводит к порче базы. Это я на всякий случай, если вдруг на 6.0 решишь перейти.
5.5 уже есть. Переход на 5.6 делается просто обновлением серверного софта, формат базы не меняется?kdv писал(а):5.5 - платный. на 5.6 переход бесплатный. переходить на версии выше можно только если софт сами разрабатывали.А все эти переходы как делаются? Я просто с interbase недавно работаю.
А что значит "переходить на версии выше можно только если софт сами разрабатывали"? Придется что-то в исходниках править?
нет.формат базы не меняется?
это значит, что МОГУТ быть несовместимости. зарезервированные слова, криво написанные запросы (парсер исправлен в новых версиях), и т.п. То есть, совместимость определяет и декларирует разработчик ПО.А что значит "переходить на версии выше можно только если софт сами разрабатывали"?
кроме того, если IB 5.x не купленный, то ...
это Firebird. сокращенно FB. InterBase - сокращенно IB.Это что? Или кто?
чем что отличается давным-давно написано в FAQ - www.ibase.ru/ibfaq.htm
А платное ПО от бесплатного отличается как минимум тем, что если ты платное спер, то тебя могут взять за задницу. Причем с большей вероятностью именно тебя, а не твою контору.
Вот все, что есть
http://www.ibase.ru/devinfo/allversions.htm
http://www.ibase.ru/devinfo/allversions.htm