Имя: Пароль:
1C
1С v8
Странное поведение запроса
0 Rodinyr
 
08.11.13
16:21
Доброго времени суток.
При отладки написанного запроса заметил такую штуку: когда запрос выполняет такой код:
|    СУММА(ЕСТЬNULL(ВЫРАЗИТЬ(ВложенныйЗапрос.Количество / СпикокЕденицИзмерения.КУп3 КАК ЧИСЛО(10, 2)), 0)) КАК КоличествоУп3,

при условии что Знчение ВложенныйЗапрос.Количество челое число, СпикокЕденицИзмерения.КУп3 тоже целое число и при делении должно получится целое число, но в результате запрос возвращает значение дробно.
1 Enders
 
08.11.13
16:22
Целое разделить на Целое не равно Целому :)
2 Rodinyr
 
08.11.13
16:23
К примеру ВложенныйЗапрос.Количество=720, СпикокЕденицИзмерения.КУп3=120

результат должен получиться 6, запрос возврощает 5,999
3 mikecool
 
08.11.13
16:24
(2) на главной видел 2 + 2 = 3.999999999999999999999
тут то же самое
4 Rodinyr
 
08.11.13
16:25
А как этого избежать?
5 Rodinyr
 
08.11.13
16:30
(3) Это я тоже видел на главной ))) Мне главное понять как этого избежать? Ибо хочется что-бы все запрос считал, а не в цикле все это пересчитывать...
6 Rodinyr
 
08.11.13
16:46
Еще нееодназначная штука получается с функцией "ВЫРАЗИТЬ":
Если вместо  ЧИСЛО(10, 2) я напишу  ЧИСЛО(10, 0) то функция иногда не обрезает значение, а округляет..
Кто знает по этому поводу что?
7 Ненавижу 1С
 
гуру
08.11.13
16:47
(6) всегда округляет
8 Enders
 
08.11.13
16:50
(2) где-то что-то недоговариваете
ВЫРАЗИТЬ(720 / 120 КАК ЧИСЛО(10, 2)) КАК КоличествоУп3 =6
9 Rodinyr
 
08.11.13
16:51
(7) Я наглядно видел как 2 одинаковых товара(имеется ввиду с одинаковым отгруженным количеством и одинаковым Коэффициентом СпикокЕденицИзмерения.КУп3 ) на выходе имели разные значения.
10 Rodinyr
 
08.11.13
16:52
(8) А что я могу не договаривать? если я в отладчике видел что в параметрах ВложенныйЗапрос.Количество=720 в СпикокЕденицИзмерения.КУп3=120 а, КоличествоУп3 выдает 5,999?
11 Maxus43
 
08.11.13
16:56
выкинь выразить вобще, всё правильно будет считать... ты СУБД своими кастами вводишь в панику
12 Maxus43
 
08.11.13
16:57
или выражай во вложенном запросе сразу, а не при арифмитических операциях
13 Rodinyr
 
08.11.13
16:58
(11) т.е. мне функция выразить из 6-и делает 5.999
14 Enders
 
08.11.13
16:59
Ну и кстати, а ты случайно в запросе(до операции деления) не выражаешь эти
ВложенныйЗапрос.Количество и
СпикокЕденицИзмерения.КУп3 ?)
а то мало ли)
15 Maxus43
 
08.11.13
16:59
(13) типы чисел - зыбкая весч... в паскале тип Real 3/9 выдавал 2.99999999... и если посчитать так же, как считает процессор - он прав)
16 Rodinyr
 
08.11.13
17:02
(15)Ясно. будем знать... Просто изначально переписывал чужой запрос. Функция изначально там присутствовала.