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

Вниз

Округление в Firebird   Найти похожие ветки 

 
Juice ©   (2006-10-20 12:29) [0]

Нужно округлять Numeric-значения до второго знака после запятой. В UDF такого не нашел, может плохо искал. Как быть?


 
Johnmen ©   (2006-10-20 12:32) [1]

Где округлять? И для чего?


 
Juice ©   (2006-10-20 12:39) [2]

Сори, в хранимке. В голову приходит взять Numeric-переменную, умножить ее на 100 и присвоить Integer-переменной, затем поделить последнюю на 100 и присвоить обратно Numeric-переменной. Как думете, прокатит такое? Или есть что-то получше? Не на чем сейчас проверить.


 
Megabyte ©   (2006-10-20 12:41) [3]

Эээ, а разве не проще задать размерность Numeric до второго знака после запятой?


 
Johnmen ©   (2006-10-20 12:43) [4]

Прокатит.
Не забыть, что при приведении к типу интегер происходит арифметичекое округление.


 
Juice ©   (2006-10-20 12:52) [5]


> Эээ, а разве не проще задать размерность Numeric до второго
> знака после запятой?

Это был бы truncate


 
unknown ©   (2006-10-20 12:57) [6]


> Juice ©   (20.10.06 12:52) [5]
> Это был бы truncate

Нет.
select cast(12345.675 as numeric(15,2)) from rdb$database
Результат : 12345,68
select cast(12345.674 as numeric(15,2)) from rdb$database
Результат : 12345,67


 
Johnmen ©   (2006-10-20 13:24) [7]


> unknown ©   (20.10.06 12:57) [6]


Для 1 диалекта это не так.


 
unknown ©   (2006-10-20 13:33) [8]


> Johnmen ©   (20.10.06 13:24) [7]
> > unknown ©   (20.10.06 12:57) [6]
> Для 1 диалекта это не так.

Не совсем - есть небольшая разница в округлении, т.е. 12345.675 округляет вниз
до .67, а 12345.676 уже вверх  - до .68


 
Johnmen ©   (2006-10-20 13:48) [9]


> unknown ©   (20.10.06 13:33) [8]
> Не совсем -


Прошу прощения, что "не совсем"?

>есть небольшая разница в округлении, т.е. 12345.675 округляет вниз
>до .67, а 12345.676 уже вверх  - до .68

Разница, она либо есть, либо нет. И в 1 диалекте округление аболютно нормально. Вот только эффект разный.
Для размышлений попробуй, например, 32.325 округлить...:)))


 
Johnmen ©   (2006-10-20 14:00) [10]


> unknown ©


Совсем забыл, ещё попробуй округлить unknown ©   (20.10.06 12:57) [6], но приведением к numeric(9,2), 1 диал.
Это для полноты исходного материала для размышлений...:))


 
unknown ©   (2006-10-20 14:10) [11]


> Johnmen ©   (20.10.06 14:00) [10]

Признаю, был неправ. В 1-м диалекте в отличии от 3 обязательно будет
погрешность при округлении из-за специфики хранения значений :)


 
Johnmen ©   (2006-10-20 15:32) [12]


> unknown ©   (20.10.06 14:10) [11]


Да. Но не только "хранение", но и представление. О чём говорит результат
select cast(12345.675 as numeric(15,2)) from rdb$database
и
select cast(32.325 as numeric(15,2)) from rdb$database



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

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

Наверх




Память: 0.49 MB
Время: 0.062 c
15-1165410940
Gero
2006-12-06 16:15
2006.12.31
Mylene Farmer «California»


2-1165666026
xela
2006-12-09 15:07
2006.12.31
Передача текста в браузер


15-1165462355
Slider007
2006-12-07 06:32
2006.12.31
С днем рождения ! 7 декабря


15-1165594151
Kerk
2006-12-08 19:09
2006.12.31
Какнить вообще можно бороться с такими уродами?


15-1165583652
Cash
2006-12-08 16:14
2006.12.31
Про: "... как решать задачи?"