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

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

Round [D5, MSSQL]


MakNik ©   (2005-11-09 17:53:00) 

Есть запрос:

Declare @I Float Set @I=23.075
Select Round(23.075,2),Round(@I,2),Round(@I*100,0)*0.01


Подскажите, пожалуйста, как правильно использовать ф-цию Round так, чтобы результат округления был правильный (23.08)?


DiamondShark   (2005-11-16 19:06:00) [1]


> MakNik   (16.11.05 11:14) [9]
>
> > И еще не умножать на 0,01, а делить на 100
>
> ... а в чем разница?

Число 0.01 невозможно точно представить как двоичное число с плавающей точкой.


MakNik   (2005-11-16 11:14:00) [2]


> И еще не умножать на 0,01, а делить на 100

... а в чем разница?


Anatoly Podgoretsky   (2005-11-15 13:20:00) [3]

И еще не умножать на 0,01, а делить на 100


Ega23   (2005-11-15 12:27:00) [4]


> ... читал внимательно... не нашел... тыкните носом...


Даю наводку: float - число с плавающей запятой.


MakNik   (2005-11-15 11:31:00) [5]

... еще заметил что под разными системами округление работает по разному...


MakNik   (2005-11-10 13:22:00) [6]

... читал внимательно... не нашел... тыкните носом...

п.с. Опытным путем определил что такой эффект при округлении с типом Float не возникает при округлении до целого или до 1-го знака, а проявляется при округлении до 2-го и более знака... как это объяснить?


Ega23   (2005-11-10 13:15:00) [7]


> .. Это понятно, с numeric(16,8) работает правильно
> ... а объясните, плз., начинающему, почему с Float не работает?
>
>


Залезь в BOL и почитай внимательно. Только внимательно, не поленись.


MakNik   (2005-11-10 12:52:00) [8]

... Это понятно, с numeric(16,8) работает правильно
... а объясните, плз., начинающему, почему с Float не работает?


Ega23   (2005-11-09 18:08:00) [9]

Используй вместо float тип numeric


Declare @I numeric(16,8) Set @I=23.075
Select Round(23.075,2),Round(@I,2), Round(@I*100,0)*0.01

                                                   
------- ------------------ -------------------------
23.080  23.08000000        23.0800000000

(1 row(s) affected)


Bronco   (2005-11-09 18:01:00) [10]

Declare @I numeric(x, y) Set @I=23.075
?


Наверх

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