![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
отображение FLOAT [D7, IB6.x]
yk © (2005-05-25 10:33:00)Уважаемые Мастера!
Простите за нескромный вопрос,
как можно задать в запросе точность float до определённого знака?
например я выбираю цены товаров, и у меня в таблице выводятся
числа типа 45,3406768456, а мне надо только 45,34
(т.е. 45 руб 34 коп)
Заранее спасибо :)
Danilka (2005-05-27 10:56:00) [1]хотя нет, не безразмерный: были рубли, стали доллары, но тем не менее - коэффициент.
Danilka (2005-05-27 10:53:00) [2][27] msguns © (27.05.05 10:46)
> А тебе не приходило в голову, что валютный курс - это та
> же цена. Только денег ?
Хм, по-моему все-таки нет. На мой взгляд, это не цена, а безразмерный коэффициент, такой-же как и количество. Когда умножаем или делим что-то на безразмерный коэффициент, получаем ту-же размерность, что была ранее. Умножаем деньги на ко-во - получаем деньги. Умножаем деньги на курс - получаем деньги.
:)
msguns (2005-05-27 10:46:00) [3]>Danilka © (27.05.05 09:42) [26]
>за исключением того, что курс не является деньгами, а является коэффициентом.
А тебе не приходило в голову, что валютный курс - это та же цена. Только денег ?
Danilka (2005-05-27 09:42:00) [4][25] msguns © (27.05.05 09:33)
> Но опять же существуют разные предметные области, где точнось
> денежных характеристик (цена, сумма, курс и т.д.) может
> быть и 2, и больше знаков дроби.
С этим согласен, за исключением того, что курс не является деньгами, а является коэффициентом.
Но с предыдущим твоми примером не совсем согласен - бухгалтерия все равно себестоимость партии будет списывать с точностью до двух знаков и дофига народу работает в 1с-ке и не жужжит по поводу точности 2 знака, и гвоздями успешно торгует. :)
Но, конечно, постановка она разная может быть и требования разные.
msguns (2005-05-27 09:33:00) [5]>Danilka © (27.05.05 09:27) [24]
>Тоже вопрос спорный, но, честно говоря, с тобой по этому поводу надоело спорить. :)))
Дань, ну кто ж тебя в попу-то колет - спорить ?
Если у тебя не было и нет причин беспокоиться о потери точности - и слава богу, и на здоровье !
Но опять же существуют разные предметные области, где точнось денежных характеристик (цена, сумма, курс и т.д.) может быть и 2, и больше знаков дроби.
Я вообще не вижу тут предмета для спора. Однако на всякий случай советую новичкам: будьте предусмотрительны, помните о законах Мэрфи: если все у вас сегодня хорошо - то в ближайшее время случится что-нибудь непредвиденное, которое все испортит ;)
Danilka (2005-05-27 09:27:00) [6][18] msguns © (26.05.05 10:55)
Тоже вопрос спорный, но, честно говоря, с тобой по этому поводу надоело спорить. :)))
Danilka (2005-05-27 09:25:00) [7][12] yk © (26.05.05 08:19)
Правильно тебе понравилось. :))
[15] Polevi © (26.05.05 09:45)
> 4 тоже может не хватить, у меня (20,8)
Для хранениячего, денег??? Ну-ну. Если какой-то коэффициент, например курс валюты, тогда, таки да. Если деньги, то и двух знаков достаточно для хранения, а в вычислениях надо использовать максимум.
Ну, шо, опять холивар? :))
msguns (2005-05-27 09:13:00) [8]>alex_*** (26.05.05 18:15) [21]
>у float поля в Delphi есть возможность задать маску для форматирования, насколько помню
см [2]
alex_*** (2005-05-26 18:15:00) [9]у float поля в Delphi есть возможность задать маску для форматирования, насколько помню
msguns (2005-05-26 15:58:00) [10]>YK © (26.05.05 15:53) [19]
>(храню цену за 1 шт, а не 1000 )
>Может мне тогда особо и не нужны знаки после запятой ?
Пример в [18] приведен как раз для иллюстрации нужности. Читайте ответы вдумчивее ;)
YK (2005-05-26 15:53:00) [11]у меня в проге надо вводить цену за штуку и количество изделий в поставке - итого подсчитывается
(храню цену за 1 шт, а не 1000 )
Может мне тогда особо и не нужны знаки после запятой ?
msguns (2005-05-26 10:55:00) [12]>Polevi © (26.05.05 09:45) [15]
>4 тоже может не хватить, у меня (20,8)
Зависит от специфики предметной области. На что я и намекнул. Цифра "4" была указана просто как пример
>yk © (26.05.05 09:54) [17]
>Не очень понимаю зачем это :(
Приходная накладная
-------------------------------
..
Пакеты п/э шт: 10000 Цена за 1000: 12-38 Сумма 123-80
Продаются в розницу поштучно. Цена вх.за 1 ед 0-01,238 коп.
Примечание: Вх.цена нужна для насчета дохода от продажи и вообще для бухгалтерии
yk (2005-05-26 09:54:00) [13]
> msguns ©
> Если же может быть мелочевка, то такой вариант рискован,
> лучше использовать сотые копеек (15,4)
Не очень понимаю зачем это :(
Для деления что-ли?
yk (2005-05-26 09:49:00) [14]
> А что такое decimal(15,2)на самом деле ???
Для "виртуальных" типов данных NUMERIC(precision, scale) и DECIMAL (precision, scale) при объявлении поля анализируется его точность, и IB пытается "втиснуть" его в один из физических типов - в диалекте 1: smallint, integer, float, double precision - в соответствии с указанными precision и scale, в диалекте 3: smallint, integer, in64.
Собственно говоря, я хочу использовать decimal для того, чтобы не совершать преобразования ручками (могу запутаться :( )
Ну в Delphi конечно , если надо делаю RoundTo(num,-2)
Polevi (2005-05-26 09:45:00) [15]>msguns © (26.05.05 09:14) [13]
4 тоже может не хватить, у меня (20,8)
Johnmen (2005-05-26 09:24:00) [16]>yk © (26.05.05 08:19) [12]
А что такое decimal(15,2)на самом деле ???
Может я уже давно чего-то не понимаю, вот автор сам нашел на ibase.ru и привел здесь ссылку на статью, отвечающую на все вопросы по данной теме. НО !!! Такое впечатление, что сам он эту статью не читал. Даже по диагонали...:(
msguns (2005-05-26 09:14:00) [17]>yk © (26.05.05 08:19) [12]
>Мне понравился вариант с decimal(15,2)
Если ТМЦ типа автомобилей или недвижимости, то вполне сойдет. Если же может быть мелочевка, то такой вариант рискован, лучше использовать сотые копеек (15,4)
yk (2005-05-26 08:19:00) [18]YrikGL !
Мне понравился вариант с decimal(15,2)
Предлагаю перевести цену на этот тип.
Или ты настаиваешь на integer ? (Какие аргументы ?)
Пока буду у себя с decimal работать...
isasa (2005-05-25 17:05:00) [19]>Надо чётко разделять такие понятия, как "хранение/вычисление" >и "отображение". Они никак, по большому счёту, не связаны.
>Если вместо double использовать single (эквивалент FLOAT), то >результат будет еще хуже: -43,9400634765625
Совершенно верно, и поэтому выводить число single, как
-43,9400634765625
мягко выражаясь некорректно
yk (2005-05-25 11:19:00) [20]http://www.ibase.ru/devinfo/round.htm NUMERIC(15, 2) или как DECIMAL(15, 2)
????
Как разберусь с этим обязательно напишу что получилось ;)