![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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