Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

FLOAT в Firebird [FireBird]


dimaL ©   (2007-08-28 09:42:00) 

Проблема такая: Не точно сохраняются данные типа Float в таблица FB (Через параметр ХП передаю 1.2, в таблицу записывается 1.20000004768372). Как решить такую проблему?


Johnmen   (2007-08-28 12:36:00) [1]

Единственная правильная рекомендация - читать внимательно документацию по типам данных для FB конкретной версии, для БД конкретного диалекта! Ибо одни и те же типы отличаются своими свойствами.
Всё остальное - фантазии и лукавство.

www.ibase.ru


PEAKTOP   (2007-08-28 12:04:00) [2]

Не дергай FLOAT без особой надобности.

Я как-то в одном проекте его использовал, который рассчитывал производственную калькуляцию заказа, которая состояла из тысяч элементов (шурупчики, болтики, гаечки и т.д.) при интенсивном вводе данных в БД.
И естественно наступил на грабли при округлении чисел до 2 знаков после запятой (деньги). За год эта фигня "накручивала" погрешность до 100 гривен ($20)


Anatoly Podgoretsky   (2007-08-28 11:20:00) [3]

В большинстве баз без разницы, но идеологически вернее Decimal
Для IB/FB это правильно, в зависимости от версии и уровня результаты могут быть не совсем те, что ожидаются, а Decimal по стандарту гарантирует BCD


Slider007   (2007-08-28 11:01:00) [4]

dimaL   (28.08.07 10:15) [5]
с точностью до тысячных

numeric(15,3)


Anatoly Podgoretsky   (2007-08-28 10:58:00) [5]

> dimaL  (28.08.2007 10:00:02)  [2]

Не использовать Float


Вася Правильный   (2007-08-28 10:44:00) [6]

NUMERIC
DECIMAL


dimaL   (2007-08-28 10:15:00) [7]


> Тебе точность до какого знака нужна ?

Все просто: Пользователь вводит в таблицу некоторое число (Расход материала для изделия), с точностью до тысячных. Необходимо, чтобы это число сохранилось в том виде, в котором было введено. Не точное сохранение может оказать негативный результат для будущих расчетов.


Slider007   (2007-08-28 10:05:00) [8]

dimaL   (28.08.07 10:00) [2]
Тебе точность до какого знака нужна ?


Sinus   (2007-08-28 10:05:00) [9]

если 1.2 это "деньги", то тебе надо использовать соответсвующий тип данных и тогда не будет проблем, зайди на www.ibase.ru


dimaL   (2007-08-28 10:00:00) [10]


> 1.2 невозможное число для Float, наиболее близкое к нему
> 1.20000004768372

Это все понятно. Но как выйти из этой ситуации.


Anatoly Podgoretsky   (2007-08-28 09:48:00) [11]

> dimaL  (28.08.2007 09:42:00)  [0]

1.2 невозможное число для Float, наиболее близкое к нему 1.20000004768372


Наверх

Титульная страница Поиск, карта сайта Написать письмо