Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Колбасня какая-то с округлением! / 7 сообщений из 7, страница 1 из 1
10.01.2001, 18:23
    #32001484
Staple
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Колбасня какая-то с округлением!
Имеем в какой-нибудь колонке c1 типа float значение 9.4900000000000002
и страшное желание округлить его вверх до 2-х знаков после запятой.
Функция ceiling, в общем-то, именно этим и занимается...
Пишем : Update t1 Set c1 = Ceiling(c1*100)/100
В реультате получаем то же самое значение.
Если сделать Update t1 Set c1 = Ceiling(c1*100), то получится 949.0 (что уже неправильно),
однако, вслед за этим после Update t1 Set c1 = с1/100 опять имеем 9.4900000000000002!
Откуда, черт подери?!!!
И это при том, что просто Select ceiling(9.4900000000000002*100)/100 выдает 9.50,
что, собственно, и требуется!
Вот такая, блин, музыка... помогите, люди добрые!
...
Рейтинг: 0 / 0
10.01.2001, 21:08
    #32001487
Дед Маздай
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Колбасня какая-то с округлением!
Дядя Скрепка, ты решил проверить коллег на знание матчасти? Посмотри внимательно описание типа float: макс.длина 8 байт, макс.точность - 15 знаков после запятой. У тебя последняя двойка стоит на 16-м месте. Передвинь ее на одну позицию влево и снова обретешь душевный покой. Все, что правее 15-го знака во float - белый шум. Так что не удивляйся своим результатам, сам понимаешь: garbage in - garbage out.
...
Рейтинг: 0 / 0
11.01.2001, 10:35
    #32001492
Staple
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Колбасня какая-то с округлением!
Ой! Виноват! К семи вечера башка уже распухает так, что в дверь не пролезает, зато просыпается болтливость... мог бы и сам догадаться. Спасибо!
...
Рейтинг: 0 / 0
11.01.2001, 19:51
    #32001503
febob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Колбасня какая-то с округлением!
Еще надежней это преобразовать в decimal(18,2) или numeric(18,2) а еще надежней хранить их в этих типах в таблице всегда и тогда проблем вообще никогда нет - проверено временем
...
Рейтинг: 0 / 0
12.01.2001, 11:44
    #32001512
Staple
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Колбасня какая-то с округлением!
Понимаю. Но иногда приходится импортировать данные из таблиц Excel в именно таком виде,
так что decimal и numeric не катят.
...
Рейтинг: 0 / 0
14.01.2001, 17:03
    #32001530
Константин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Колбасня какая-то с округлением!
Иногда в общем-то плевать, что где-то в 10 знаке что-то находится. Достаточно принимать в клиента данные в денежном формате ( например, "parameter:=Query1.fields[n].asCurency", в Delphi)
...
Рейтинг: 0 / 0
15.01.2001, 11:18
    #32001534
Axel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Колбасня какая-то с округлением!
поскольку тема весьма актуальная, позволю себе непозволительную роскошь обратить ваше внимание на некоторые немаловажные моменты:
> Еще надежней это преобразовать в decimal(18,2) или numeric(18,2)
достаточно использовать round(field,2)
> а еще надежней хранить их в этих типах в таблице всегда и тогда проблем вообще никогда
> нет - проверено временем
если используется SQL Links в BDE, то приходится использовать BCD для нормальной работы с точкой в этом случае.
>Иногда в общем-то плевать, что где-то в 10 знаке что-то находится. Достаточно принимать в
>клиента данные в денежном формате ( например, "parameter:=Query1.fields[n].asCurency", в
>Delphi)
оно конечно плевать, но как бы в колодец не попасть при этом в случае, если хранимая процедура считает сумму по таким полям. тогда придется sum(round()) использовать.

итого: если хотим везде прописывать round(,2), то используем типы money,float,etc.
если хотим надежности - используем numeric, помня о BCD.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Колбасня какая-то с округлением! / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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