|
Странное поведение запроса | ☑ | ||
---|---|---|---|---|
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)Ясно. будем знать... Просто изначально переписывал чужой запрос. Функция изначально там присутствовала.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |