Поле типа Float: глюки с дробными числами

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
slc
Сообщения: 15
Зарегистрирован: 22 авг 2006, 11:45

Поле типа Float: глюки с дробными числами

Сообщение slc » 23 окт 2006, 11:24

Доброго времени суток.

InterBase 5.5, в таблице - поле типа Float. Из программы на Delphi пытаюсь писать значение в поле:
IBTable1.FieldByName('MyField').AsFloat:=StrToFloat(Edit1.Text).

Если в Edit1 введено целое число, то все сохраняется корректно, если же дробное - получается какое-то огромное совершенно левое число.

Пытался добавлять и редактировать через IBQuery/SQL и прямо из DBGrid - то же самое.

Как это исправить?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 23 окт 2006, 11:53

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 решишь перейти.

slc
Сообщения: 15
Зарегистрирован: 22 авг 2006, 11:45

Сообщение slc » 23 окт 2006, 15:43

kdv писал(а):float практически не пригоден к использованию из-за низкой точности. см.
www.ibase.ru/devinfo/round.htm
плюс известную статью про вещественные числа
http://www.delphikingdom.com/asp/viewit ... alogid=374
Спасибо. Проблема решилась путем замены типа поля с Float на Double.
p.s. кроме того, в 5.5 есть глюк, который приводит к порче базы, поэтому надо апгрейдиться до 5.6. И еще в 5.x и 6.0 есть +1 один глюк, который тоже приводит к порче базы. Это я на всякий случай, если вдруг на 6.0 решишь перейти.
А все эти переходы как делаются? Я просто с interbase недавно работаю.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 23 окт 2006, 21:40

А все эти переходы как делаются? Я просто с interbase недавно работаю.
5.5 - платный. на 5.6 переход бесплатный. переходить на версии выше можно только если софт сами разрабатывали.

slc
Сообщения: 15
Зарегистрирован: 22 авг 2006, 11:45

Сообщение slc » 23 окт 2006, 22:32

kdv писал(а):
А все эти переходы как делаются? Я просто с interbase недавно работаю.
5.5 - платный. на 5.6 переход бесплатный. переходить на версии выше можно только если софт сами разрабатывали.
5.5 уже есть. Переход на 5.6 делается просто обновлением серверного софта, формат базы не меняется?
А что значит "переходить на версии выше можно только если софт сами разрабатывали"? Придется что-то в исходниках править?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 24 окт 2006, 10:10

формат базы не меняется?
нет.
А что значит "переходить на версии выше можно только если софт сами разрабатывали"?
это значит, что МОГУТ быть несовместимости. зарезервированные слова, криво написанные запросы (парсер исправлен в новых версиях), и т.п. То есть, совместимость определяет и декларирует разработчик ПО.

кроме того, если IB 5.x не купленный, то ...

slc
Сообщения: 15
Зарегистрирован: 22 авг 2006, 11:45

Сообщение slc » 24 окт 2006, 10:19

kdv писал(а):
формат базы не меняется?
кроме того, если IB 5.x не купленный, то ...
То...?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 24 окт 2006, 11:31

То...?
то. или купить, или переходить на бесплатный сервер.

slc
Сообщения: 15
Зарегистрирован: 22 авг 2006, 11:45

Сообщение slc » 24 окт 2006, 11:45

kdv писал(а):
То...?
то. или купить, или переходить на бесплатный сервер.
Хочешь сказать, что пиратскую копию апгейдить не получится?
А "бесплатный сервер" - это какой?

Dimka
Сообщения: 5
Зарегистрирован: 29 июн 2006, 09:23

Сообщение Dimka » 24 окт 2006, 13:10

slc писал(а):А "бесплатный сервер" - это какой?
И чем отличается бесплатный от платного?

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Сообщение stix-s » 24 окт 2006, 14:40

Dimka писал(а):
slc писал(а):А "бесплатный сервер" - это какой?
И чем отличается бесплатный от платного?
1 FB
2 отличается тем, что распространяется бесплатно, то бишь даром :)
Пользуя пиратское ПО ты нарушаешь закон со всеми вытекающими :)

slc
Сообщения: 15
Зарегистрирован: 22 авг 2006, 11:45

Сообщение slc » 24 окт 2006, 14:54

stix-s писал(а):
Dimka писал(а):
slc писал(а):А "бесплатный сервер" - это какой?
И чем отличается бесплатный от платного?
1 FB
Это что? Или кто? ;)

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 24 окт 2006, 15:05

Это что? Или кто?
это Firebird. сокращенно FB. InterBase - сокращенно IB.

чем что отличается давным-давно написано в FAQ - www.ibase.ru/ibfaq.htm

А платное ПО от бесплатного отличается как минимум тем, что если ты платное спер, то тебя могут взять за задницу. Причем с большей вероятностью именно тебя, а не твою контору.

Dimka
Сообщения: 5
Зарегистрирован: 29 июн 2006, 09:23

Сообщение Dimka » 24 окт 2006, 15:16

Вот все, что есть
http://www.ibase.ru/devinfo/allversions.htm

Ответить