![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Округление в Firebird [IB6.x]
Juice © (2006-10-20 12:29:00)Нужно округлять Numeric-значения до второго знака после запятой. В UDF такого не нашел, может плохо искал. Как быть?
Johnmen (2006-10-20 15:32:00) [1]
> 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
unknown (2006-10-20 14:10:00) [2]
> Johnmen © (20.10.06 14:00) [10]
Признаю, был неправ. В 1-м диалекте в отличии от 3 обязательно будет
погрешность при округлении из-за специфики хранения значений :)
Johnmen (2006-10-20 14:00:00) [3]
> unknown ©
Совсем забыл, ещё попробуй округлить unknown © (20.10.06 12:57) [6], но приведением к numeric(9,2), 1 диал.
Это для полноты исходного материала для размышлений...:))
Johnmen (2006-10-20 13:48:00) [4]
> unknown © (20.10.06 13:33) [8]
> Не совсем -
Прошу прощения, что "не совсем"?
>есть небольшая разница в округлении, т.е. 12345.675 округляет вниз
>до .67, а 12345.676 уже вверх - до .68
Разница, она либо есть, либо нет. И в 1 диалекте округление аболютно нормально. Вот только эффект разный.
Для размышлений попробуй, например, 32.325 округлить...:)))
unknown (2006-10-20 13:33:00) [5]
> 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:24:00) [6]
> unknown © (20.10.06 12:57) [6]
Для 1 диалекта это не так.
unknown (2006-10-20 12:57:00) [7]
> 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
Juice (2006-10-20 12:52:00) [8]
> Эээ, а разве не проще задать размерность Numeric до второго
> знака после запятой?
Это был бы truncate
Johnmen (2006-10-20 12:43:00) [9]Прокатит.
Не забыть, что при приведении к типу интегер происходит арифметичекое округление.
Megabyte (2006-10-20 12:41:00) [10]Эээ, а разве не проще задать размерность Numeric до второго знака после запятой?
Juice (2006-10-20 12:39:00) [11]Сори, в хранимке. В голову приходит взять Numeric-переменную, умножить ее на 100 и присвоить Integer-переменной, затем поделить последнюю на 100 и присвоить обратно Numeric-переменной. Как думете, прокатит такое? Или есть что-то получше? Не на чем сейчас проверить.
Johnmen (2006-10-20 12:32:00) [12]Где округлять? И для чего?