Главная страница
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.031 c
3-1129697892
Liavik
2005-10-19 08:58
2005.12.04
longtime в accsess &delphi


1-1130227894
CRep
2005-10-25 12:11
2005.12.04
Delphi, Crystal Reports Print Engine (crpe32.dll)


3-1129812996
DelphiLexx
2005-10-20 16:56
2005.12.04
FIBDataSet и параметр


4-1128426111
Roughneck
2005-10-04 15:41
2005.12.04
Как получить Handle первичного потока зная только ID процесса


14-1131842407
Gero
2005-11-13 03:40
2005.12.04
Запрет анонимам постить в «Потрепаться»