Имя: Пароль:
1C
1С v8
Мат.операции в запросах и значащие знаки после запятой
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) Фишка в том что у каждого договора своя премия перестрахования и своя премия страхования, следовательно из этих двух чисел надо высчитывать коэффициент. Поэтому вариант с константой здесь сразу отпадает) А важно было просто правильный формат числа задать) Просто я не сразу понял какой именно))
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.