|
Мат.операции в запросах и значащие знаки после запятой | ☑ | ||
---|---|---|---|---|
0
ixilimuse
05.08.14
✎
07:44
|
Всем доброго времени суток!
Столкнулся с весьма интересной ситуацией, и не могу понять что делать? Пишу такой запрос: ВЫБРАТЬ ВЫРАЗИТЬ(8183906.25 / 2130663994.68 КАК ЧИСЛО(30,16)) КАК Бета_X Получаю значение: 0,0038410121306946 Именно такое значение мне необходимо получить в моем запросе отчета, для того что бы этот коэффициент использовать дальше в расчетах формулы. В таблицах содержатся числа. Понимаю что в таблице они могут иметь разный формат. Поэтому привожу к определенному типу: ВЫБРАТЬ ВЫРАЗИТЬ(ДД.ПремияПерестраховщикаНеРезидент КАК ЧИСЛО(30,2)) КАК Делимое, ВЫРАЗИТЬ(ПП.СтраховаяПремия КАК ЧИСЛО(30,2)) КАК Делитель ИЗ ВТ_ХТабл ; Такой подзапросик даст два числа, идентично совпадающие числам из первого примера: 8183906.25 и 2130663994.68. Только вот если я делаю так: ВЫБРАТЬ ВЫРАЗИТЬ( ВЫРАЗИТЬ(ДД.ПремияПерестраховщикаНеРезидент КАК ЧИСЛО(30,2)) / ВЫРАЗИТЬ(ПП.СтраховаяПремия КАК ЧИСЛО(30,2)) КАК ЧИСЛО(30,16)) КАК Бета_Дата ИЗ ВТ_ХТабл ; То у меня получается обрезанное число: 0,00384101 Знаков после запятой гораздо меньше 16ти, хотя если произвести деление констант, то знаков отображается 16, после запятой. Хотя привожу типы и там и тут. Но в чем дело, понять не могу. Если кто сталкивался с подобным, большая просьба подсказать в каком направлении искать)) Заранее спасибо! |
|||
1
ixilimuse
05.08.14
✎
07:50
|
Вопрос решен! Всем спасибо !!!))))
Удивительное решение оказалось Нудно было числа из таблицы приводить не как ЧИСЛО(30,2), а как ЧИСЛО(16,2). И все расчиталось как надо. ВЫБРАТЬ ВЫРАЗИТЬ( ВЫРАЗИТЬ(ДД.ПремияПерестраховщикаНеРезидент КАК ЧИСЛО(16,2)) / ВЫРАЗИТЬ(ПП.СтраховаяПремия КАК ЧИСЛО(16,2)) КАК ЧИСЛО(30,16)) КАК Бета_Дата ИЗ ВТ_ХТабл ; |
|||
2
Fragster
гуру
05.08.14
✎
09:14
|
оно не удивительное и зависит от СУБД
|
|||
3
ам794123
05.08.14
✎
09:37
|
правильное решение: использовать константу 0,0038410121306946 в запросе напрямую без извращений. как вариант параметр запроса
|
|||
4
mikecool
05.08.14
✎
09:55
|
"Нудно было числа из таблицы приводить не как ЧИСЛО(30,2), а как ЧИСЛО(16,2). И все расчиталось как надо.
" вот так хрень... |
|||
5
ixilimuse
05.08.14
✎
10:15
|
(3) Фишка в том что у каждого договора своя премия перестрахования и своя премия страхования, следовательно из этих двух чисел надо высчитывать коэффициент. Поэтому вариант с константой здесь сразу отпадает) А важно было просто правильный формат числа задать) Просто я не сразу понял какой именно))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |