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