Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.04;
Скачать: CL | DM;

Вниз

Round   Найти похожие ветки 

 
MakNik   (2005-11-09 17:53) [0]

Есть запрос:

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


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


 
Bronco ©   (2005-11-09 18:01) [1]

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


 
Ega23 ©   (2005-11-09 18:08) [2]

Используй вместо 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)



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

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


 
Ega23 ©   (2005-11-10 13:15) [4]


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


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


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

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

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


 
MakNik   (2005-11-15 11:31) [6]

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


 
Ega23 ©   (2005-11-15 12:27) [7]


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


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


 
Anatoly Podgoretsky ©   (2005-11-15 13:20) [8]

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


 
MakNik   (2005-11-16 11:14) [9]


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

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


 
DiamondShark ©   (2005-11-16 19:06) [10]


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

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



Страницы: 1 вся ветка

Текущий архив: 2005.12.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.045 c
2-1132318843
ska
2005-11-18 16:00
2005.12.04
Во время вычислений приложение "виснет"


14-1132129270
Антоний
2005-11-16 11:21
2005.12.04
Про обновление Win2000ProRus


3-1129881915
Chel
2005-10-21 12:05
2005.12.04
Защита таблиц Paradox


14-1132163491
Гарри Поттер
2005-11-16 20:51
2005.12.04
Процессор Pentium IV 516 oem (S775, 2933MHz/533MHz/1MB, EM64T)


2-1132144815
syte_ser78
2005-11-16 15:40
2005.12.04
имя пользователя