Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / float, numeric / 25 сообщений из 56, страница 1 из 3
27.06.2013, 13:42
    #38312562
Testor1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float, numeric
Всем привет !

Посоветуйте какой тип использовать для финансовых операций - NUMERIC или Float или Money ?
Меня напрягают нюансы с округлением и особенностями умножений NUMERIC. :(
...
Рейтинг: 0 / 0
27.06.2013, 13:44
    #38312565
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float, numeric
Testor1Всем привет !

Посоветуйте какой тип использовать для финансовых операций - NUMERIC или Float или Money ?
Меня напрягают нюансы с округлением и особенностями умножений NUMERIC. :(А округления FLOAT не напрягают? :))
Пробуйте MONEY
...
Рейтинг: 0 / 0
27.06.2013, 13:44
    #38312568
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float, numeric
Т.е. тот ньюанс, что float - неточный тип, вас не напрягает?
...
Рейтинг: 0 / 0
27.06.2013, 14:19
    #38312643
Мистер Хенки
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float, numeric
Testor1Всем привет !

Посоветуйте какой тип использовать для финансовых операций - NUMERIC или Float или Money ?
Меня напрягают нюансы с округлением и особенностями умножений NUMERIC. :(
Сейчас работаю в компании, где таки используют float - поверьте, трудно обьяснимые нестыковки всяких разных отчетных сумм вас напрягут еще сильнее, а точнее напряжет бизнес, заказчик, покупатель )))
...
Рейтинг: 0 / 0
27.06.2013, 17:08
    #38313057
Testor1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float, numeric
Это напрягает

Слишком все сложно :( :( :(
http://sqlbooks.ru/readarticle.aspx?part=02&file=tsql14
...
Рейтинг: 0 / 0
27.06.2013, 17:49
    #38313145
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float, numeric
Testor1Это напрягает

Вы обратили внимание на то, с какой точностью приводится пример? А теперь расскажите, что Вас будет напрягать при финансовых операциях с money у которого точность 4?!
...
Рейтинг: 0 / 0
27.06.2013, 17:51
    #38313148
aleks2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float, numeric
Гавриленко Сергей АлексеевичТ.е. тот ньюанс, что float - неточный тип, вас не напрягает?
Может это бухгалтерия наркокартеля? И мильен-другой погоды не делает.
А вот крупные суммы (~10^308) надо хранить...
...
Рейтинг: 0 / 0
27.06.2013, 18:02
    #38313163
Mnior
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float, numeric
Testor1особенностями умножений NUMERICУ NUMERIC есть особенности?
Вы имеете ввиду что точный тип это такая "особенность"?
Ну в принципе да, обычно везде бардак.
...
Рейтинг: 0 / 0
27.06.2013, 18:30
    #38313202
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float, numeric
MniorУ NUMERIC есть особенности?
Вы имеете ввиду что точный тип это такая "особенность"?Ну вообще NUMERIC довольно тяжело использовать. Некоторые вещи можно объяснить, только долго и вдумчиво читая документацию, тут была масса таких примеров.
С float всё достаточно просто, нужно только помнить о том, что тип неточный.
А для NUMERIC нужно точно знасть, какой результат получяется для каждой операции и функции; для выражения предсказать результат из завсегдатаев форума может только Глори :-)
...
Рейтинг: 0 / 0
27.06.2013, 18:58
    #38313233
Ivan Durak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float, numeric
pkarklinTestor1Это напрягает

Вы обратили внимание на то, с какой точностью приводится пример? А теперь расскажите, что Вас будет напрягать при финансовых операциях с money у которого точность 4?!
у нас был как-то расчет среднего на партию товаров. Вот там средняя получалась с 6 знаками.
...
Рейтинг: 0 / 0
27.06.2013, 19:52
    #38313283
Mnior
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float, numeric
alexeyvgА для NUMERIC нужно точно знасть, какой результат получяется для каждой операции и функции; для выражения предсказать результат из завсегдатаев форума может только Глори :-)Вы издеваетесь?
Первое полугодие первого курса. Как повторение и закрепление школьного.

Модератор: Вы как-то возбуждены сегодня, не находите?!

Ну может быть пару особенностей, которые всё равно выявятся сразу же. Да и то большая часть там с константами и неявными преобразованиями.

авторС float всё достаточно простоСогласен, тупо не считает точно и всё тут.
...
Рейтинг: 0 / 0
27.06.2013, 19:55
    #38313284
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float, numeric
Ivan Durakу нас был как-то расчет среднего на партию товаров. Вот там средняя получалась с 6 знаками.

Точность money тут абсолютно не причем, ибо правила округления хоть при расчете среднего на партию товара, хоть при расчет НДС в строке С\Ф никто не отменял.
...
Рейтинг: 0 / 0
27.06.2013, 21:33
    #38313339
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float, numeric
MnioralexeyvgА для NUMERIC нужно точно знасть, какой результат получяется для каждой операции и функции; для выражения предсказать результат из завсегдатаев форума может только Глори :-)Вы издеваетесь?
Первое полугодие первого курса. Как повторение и закрепление школьного.Ну вот например:

http://www.sql.ru/forum/1004492/raschety-s-ispolzovaniem-decimal-mozhete-obyasnit-pochemu
http://www.sql.ru/forum/791756/useknovenie-znacheniy-posle-zapyatoy-transact-sql

И зачем эти геморрои? И зачем мене эти вычисления Точность, масштаб и длина (Transact-SQL) для каждой операции, для каждого выражения в каждом запросе???
MniorавторС float всё достаточно простоСогласен, тупо не считает точно и всё тут. Ну да, тупо не считает точно и тупо получается правильный результат, каждый раз. Ну только совсем немного простых правил, и всё.
...
Рейтинг: 0 / 0
27.06.2013, 21:36
    #38313340
Mnior
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float, numeric
Модераторpkarklin (Модератор)Вы как-то возбуждены сегодня, не находите?!
Ну это моё перманентное состояние. Знаете же. Просто скулю сегодня больше досталось.

И я в чём-то ошибся?
Если я неправ, то поправят, я только буду рад.
...
Рейтинг: 0 / 0
27.06.2013, 22:00
    #38313352
Mnior
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float, numeric
alexeyvgТочность, масштаб и длина (Transact-SQL) для каждой операции, для каждого выражения в каждом запросе?Таки в каждой операции? Деление (и умножение) нумерика на нумерик?
Я именно к этому и клоню. Если там что-то такое наклёвывается - значит задача видится не с того ракурса. Остальное по пальцам одной руки.
Закидайте меня помидорами реальными примерами, т.е. финансиста в студию (ща придёт адепт горы промежуточных вычислений).
А с другой стороны не думать об этом чревато. Иногда делать влоб что в методичке опасно для здоровья.

alexeyvgи тупо получается правильный результат, каждый раз. Ну только совсем немного простых правил, и всё. Откройте мне глаза.
Так немного простых правил это не разве каждой/каждого/каждом ?

PS: И да, финансы - конь в вакууме, они разные бывают.
...
Рейтинг: 0 / 0
28.06.2013, 11:46
    #38313800
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float, numeric
MnioralexeyvgТочность, масштаб и длина (Transact-SQL) для каждой операции, для каждого выражения в каждом запросе?Таки в каждой операции? Деление (и умножение) нумерика на нумерик?Ну в общем да, деление и умножение уже непростые операции в смысле понимания, какой тип получится; для функций тоже сложно. Для сложения и вычитания всё просто.

Mnioralexeyvgи тупо получается правильный результат, каждый раз. Ну только совсем немного простых правил, и всё. Откройте мне глаза.Да по сути одно правило - округление при выводе результата, больше ни чему неприятному эта неточность типа не приводит.
...
Рейтинг: 0 / 0
28.06.2013, 12:15
    #38313840
Testor1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float, numeric
Задача. Есть бонусы, которые нужно конвертировать в денюшку. Точность два знака после запятой.

В большинстве случае будет умножение типа INT*NUMERIC(16,2), но вот есть вероятность, что потребуется умножать NUMERIC(16,2) или делить. Держать все нюнасы в голове с NUMERIC и не упустить ничего - это проблема.

Вот думаю, мне нужно считать с точностью два знака, но переменные создавать желательно с NUMERIC(16,4) ?
...
Рейтинг: 0 / 0
28.06.2013, 12:18
    #38313842
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float, numeric
Testor1Задача. Есть бонусы, которые нужно конвертировать в денюшку. Точность два знака после запятой.

В большинстве случае будет умножение типа INT*NUMERIC(16,2), но вот есть вероятность, что потребуется умножать NUMERIC(16,2) или делить. Держать все нюнасы в голове с NUMERIC и не упустить ничего - это проблема.

Вот думаю, мне нужно считать с точностью два знака, но переменные создавать желательно с NUMERIC(16,4) ?MONEY - напоминает DEC(19,4)
...
Рейтинг: 0 / 0
28.06.2013, 12:26
    #38313861
Testor1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float, numeric
iapTestor1Задача. Есть бонусы, которые нужно конвертировать в денюшку. Точность два знака после запятой.

В большинстве случае будет умножение типа INT*NUMERIC(16,2), но вот есть вероятность, что потребуется умножать NUMERIC(16,2) или делить. Держать все нюнасы в голове с NUMERIC и не упустить ничего - это проблема.

Вот думаю, мне нужно считать с точностью два знака, но переменные создавать желательно с NUMERIC(16,4) ?MONEY - напоминает DEC(19,4)

SMALLMONEY использовать ?
Там есть какие-то нюансы как и с NUMERIC ?
...
Рейтинг: 0 / 0
28.06.2013, 12:30
    #38313865
Mnior
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float, numeric
alexeyvgокругление при выводе результата, больше ни чему неприятному эта неточность типа не приводит.Как же, банальная сумма, чем больше элементов - тем больше погрешность, и бац, копейка куда-то делась. Разве нет?
Код: sql
1.
2.
3.
4.
SELECT	 Convert(Money,Sum(Convert(Float,0.01) + Convert(Float,100000)))
	,              Sum(Convert(Money,0.01) + Convert(Money,100000))
FROM	master.dbo.spt_values	A CROSS JOIN
	master.dbo.spt_values	B

FloatMoney632522563252.211632522563252.25
alexeyvgНу в общем да, деление и умножение уже непростые операции в смысле понимания, какой тип получится; для функций тоже сложно.Бывает делается умножение (деление) нумерика с целыми типами, а там (согласно той же формуле) ничего особо не меняется и опять всё довольно просто.
Очень часто делается ошибка когда те же операции не выносят из цикла (хотя это мало влияет на результат) и т.д., т.е. не смешивать тёплое с мягким (*nix way) ... В итоге реальная формула чертовски упрощается.
Главное не слушать бухгалтерскую пургу.
Типичный бухгалтерБухгалтерия - победа разума над математикой!
И другое. Float - тяжёлые процессорные операции.
А Money/Decimal - тот же Int/BigInt, просто запятая смещается.
...
Рейтинг: 0 / 0
28.06.2013, 12:38
    #38313887
Mnior
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float, numeric
Testor1будет умножение типа INT * NUMERIC(16,2)Это не нумерик на нумерик.
...
Рейтинг: 0 / 0
28.06.2013, 12:39
    #38313888
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float, numeric
MniorИ другое. Float - тяжёлые процессорные операции.Как сказать...
Раньше в PC использовали сопроцессор вычислений с плавающей точкой - помните? Intel 8087...
А последние лет 20 в процессорах есть специальные инструкции для этих вычислений.
Их специально оптимизируют. Да так, что они по скорости могут превосходить целочисленные.
...
Рейтинг: 0 / 0
28.06.2013, 12:42
    #38313894
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float, numeric
MniorTestor1будет умножение типа INT * NUMERIC(16,2)Это не нумерик на нумерик.А разве перед умножением типы не приводятся к одному с наибольшим приоритетлм?
http://msdn.microsoft.com/ru-ru/library/ms190309(v=sql.110).aspx
Смотрю в таблицу по ссылке, и вдруг вижу: а NUMERIC-то там и нет!! Как же так?
...
Рейтинг: 0 / 0
28.06.2013, 12:57
    #38313921
Testor1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float, numeric
iap,


Люди добрые :) Скажите как вы большие проекты пишите? :) не хочу теории. Напишите кто и какой тип использует при подобных задачах.

Я склоняюсь к использованию SMALLMONEY, но не знаю есть ли у него какие-то нюансы, которые неочевидные, но их надо знать.
Кто подскажет ?
...
Рейтинг: 0 / 0
28.06.2013, 12:59
    #38313923
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float, numeric
Testor1iap,


Люди добрые :) Скажите как вы большие проекты пишите? :) не хочу теории. Напишите кто и какой тип использует при подобных задачах.

Я склоняюсь к использованию SMALLMONEY, но не знаю есть ли у него какие-то нюансы, которые неочевидные, но их надо знать.
Кто подскажет ?Разве я не написал уже два раза?!

MONEY!!
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / float, numeric / 25 сообщений из 56, страница 1 из 3
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]