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

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

отображение FLOAT [D7, IB6.x]


Страницы:   1 2

yk ©   (2005-05-25 10:33:00) 

Уважаемые Мастера!
Простите за нескромный вопрос,
как можно задать в запросе точность float до определённого знака?
например я выбираю цены товаров, и у меня в таблице выводятся
числа типа 45,3406768456, а мне надо только 45,34
(т.е. 45 руб 34 коп)

Заранее спасибо :)


sniknik   (2005-05-25 11:06:00) [21]

> Т.е. 45 руб 35 коп хранить как 4535 -integer,
> а 13 руб 00 коп как 1300 -integer ?
в принципе правильный подход, для денег самое то, только уже не ново... тип currency(money/или как там в IB денежный тип называется) именно так и реализован, только держит не два знака в псевдодробной части а четыре.
и в дельфях тоже самое.
т.е. используя этот тип добьешся тогоже но без собственных преобразований.


yk   (2005-05-25 11:06:00) [22]


> evvcom ©

Спасибо - обязательно посмотрю, но решила всё-таки перейти на integer, а результат выводить с помощью cast


evvcom   (2005-05-25 11:01:00) [23]


> Результат запроса у меня идёт в DBGrid. Или я что-то не
> понимаю?

Или "не знаю". Есть:
1. TField.OnGetText;
2. Calc-поля в DataSet


yk   (2005-05-25 10:58:00) [24]


> читай ibase.ru

Это я распечатю и повешу на стену!
Действительно - там всё написано :)
http://www.ibase.ru/devinfo/round.htm


> Надо чётко разделять такие понятия, как "хранение/вычисление"
> и "отображение".

Вы абсолютно правы


Johnmen   (2005-05-25 10:53:00) [25]

>yk ©   (25.05.05 10:45) [3]

Надо чётко разделять такие понятия, как "хранение/вычисление" и "отображение". Они никак, по большому счёту, не связаны.

Как хранить - ещё раз, читай ibase.ru


yk   (2005-05-25 10:47:00) [26]


> msguns ©  


> Достаточно округлять на клиенте

Как ?
Результат запроса у меня идёт в DBGrid. Или я что-то не понимаю? 8(


yk   (2005-05-25 10:45:00) [27]


> Johnmen ©


> читать ibase.ru

ЭТО?

Не надо использовать тип FLOAT
этот тип данных имеет длину 4 байта и точность всего 7 цифр. Эквивалентом в Delphi является single. Если хотите использовать вещественные числа, то сначала попробуйте перемножить и поделить два таких числа прямо в Delphi - так вы увидите точность вычислений, что исключит впоследствии проблемы с хранением и обработкой таких данных в базе.


Т.е. 45 руб 35 коп хранить как 4535 -integer,
а 13 руб 00 коп как 1300 -integer ?

А как тогда выводить правильно результат запроса цена в рублях?
Что бы в таблице отображалось на 4534 ,а 45,34 ?


msguns   (2005-05-25 10:43:00) [28]

Не надо лапать сервер без надобности. Достаточно округлять на клиенте (TFiedd.DisplayFormat)
Использование float без необходимости приводит к непредсказуемым результатам (см.Johnmen ©   (25.05.05 10:36) [1])


Johnmen   (2005-05-25 10:36:00) [29]

DisplayFormat
Дл общего развития очень полезно http://www.delphikingdom.com/asp/viewitem.asp?UrlItem=/helloworld/reals.htm
Тип float не использовать, читать ibase.ru


Страницы:   1 2

Наверх

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