| FLOAT [сообщение #6288] |
Mon, 23 February 2026 08:46  |
bsa1959
Сообщений: 9 Зарегистрирован: December 2025
|
Junior Member |
|
|
Возникла проблема округления в процедуре FIREBIRD 5.
В таблице есть поле типа FLOAT. Имеет значения от 1.00 до 1.60 через 0.1.
Процедура возвращает нехорошие значения. Т.е. не соответствуют значениям посчитаным вручную.
Прошел под IBEXPERT в отладке.
Вместо 1.00 увидел 1.0139 для этого поля после чтения из таблицы...
Где я не прав?
Хотя по документации:
Тип данных FLOAT по умолчанию представляет собой 32-битный тип с плавающей запятой
одинарной точности с приблизительной точностью 7 десятичных знаков после десятичной
точки (24 двоичных знака). Числа типа FLOAT находятся в диапазоне от 1.175 x 10-38 до 3.402 x
1038.
[Обновления: Mon, 23 February 2026 08:54] Известить модератора
|
|
|
|
|
|
| Re: FLOAT [сообщение #6292 является ответом на сообщение #6291] |
Mon, 23 February 2026 19:21   |
bsa1959
Сообщений: 9 Зарегистрирован: December 2025
|
Junior Member |
|
|
SD писал(а) Mon, 23 February 2026 15:22Ты путаешь точность отдельно взятого числа и точность серии расчётов пачки таких чисел.
Переходи на точные числа, раз у тебя шаг фиксированный.
Вы меня, наверное, не поняли....
я Записал в поле FLOAT 1.100
Почему я на чтении получаю этот результат?
Еще раз повторяю - на ЧТЕНИи. И через ibexpert....
[Обновления: Mon, 23 February 2026 19:23] Известить модератора
|
|
|
|
|
|
| Re: FLOAT [сообщение #6294 является ответом на сообщение #6293] |
Tue, 24 February 2026 01:27  |
SD
Сообщений: 461 Зарегистрирован: August 2022
|
Senior Member |
|
|
Потому что это FLOAT. Он так устроен. Он так работает. Никогда не используй его.
Ну или жалуйся Хвастунову:
SQL> create table fl (f float);
SQL> insert into fl values(1.100);
SQL> select * from fl;
F
==============
1.1000000
[Обновления: Tue, 24 February 2026 01:30] Известить модератора
|
|
|
|