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

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

Проблема с округлением [D7, Firebird]


kalliopiy ©   (2004-03-04 12:46:00) 

Здравствуйте! При записи некоторого значения в поле типа float возникает непонятная ситуация с отображением внесенного в поле значения. Т.е., например, записываем "62,8", а получаем в контроле (к примеру TDBEdit) отображение что-то типа "62,7999992845". При этом реально в БД записывается 62,8. Но если вид отображения в контролах можно настроить (хотя это тоже не выход, как по мне) через свойство DisplayFormat этого поля, то вот значение получаемое через FieldByName('myField').asString все равно получается каким-то бредовым...

Что тут можно сделать?


Zacho   (2004-03-04 15:40:00) [1]

2 kalliopiy © :
Только сначала разберись, что тебе действительно нужно: данные с плавающей точкой (DOUBLE PRECISION) и округление, или с фиксированной точкой (NUMERIC,DECIMAL).
И имей в виду NUMERIC в диалекте 1 и NUMERIC в диалекте 3 - разные вещи.


Romkin   (2004-03-04 13:14:00) [2]

FieldByName('myField').DisplayText


Johnmen   (2004-03-04 13:03:00) [3]

http://www.ibase.ru/devinfo/round.htm
и далее там же...


kalliopiy   (2004-03-04 12:59:00) [4]

??!!
М-да, значит, я не до конца с этим разобрался. Что ж, спасибо! Попробую переделать поля в Numeric.


Johnmen   (2004-03-04 12:51:00) [5]

Нет. Именно реально хранится "62,7999992845".


Zacho   (2004-03-04 12:50:00) [6]

Во-первых, не использовать тип Float. Для чисел с плавающей точкой использовать DOUBLE PRECISION, с фиксированной - NUMERIC или DECIMAL.
А если нужно округлять - то и округляй, хоть в запросах, хоть в приложении любым способом.
И еще:

> При этом реально в БД записывается 62,8

Это не так. Почитай где-нибудь о формате чисел с плавающей запятой.


Наверх

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