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