Имя: Пароль:
1C
1С v8
Запрос (В тупике)
0 Homer
 
15.11.12
12:07
есть сумма 29543.34 необходимо поделить на 162.17 и эту сумму(округленную до копеек) умножить на 15(кол дней, может меняться).
но на самом деле это сумма состоит из двух сумм. При попытки расчета не сходится сумма с оригиналом. как сделать

ВЫБРАТЬ
   (ВЫРАЗИТЬ(25689.86 / 162.17 КАК ЧИСЛО(15, 2))) * 15.00 КАК Поле1, //2 376,15
   (ВЫРАЗИТЬ(3853.48 / 162.17 КАК ЧИСЛО(15, 2))) * 15.00 КАК Поле2,  //356,4
   (ВЫРАЗИТЬ(29543.34 / 162.17 КАК ЧИСЛО(15, 2))) * 15.00 КАК Поле3  //2 732,7
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   (ВЫРАЗИТЬ(25689.86 / 162.17 КАК ЧИСЛО(15, 2))) КАК Поле1, //158,41
   (ВЫРАЗИТЬ(3853.48 / 162.17 КАК ЧИСЛО(15, 2)))  КАК Поле2, //23,76
   (ВЫРАЗИТЬ(29543.34 / 162.17 КАК ЧИСЛО(15, 2)))  КАК Поле3 //182,18

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   25689.86 / 162.17 * 15,
   3853.48 / 162.17 * 15,
   29543.34 / 162.17 * 15
   29543.34 / 162.17 * 15
1 Maxus43
 
15.11.12
12:09
Тупик (в Запросе)

ничо не понял, но! в запросах без указания точной разрядности оптимизатор скуля может повести себя непредсказуемо, и сам cast наложит, и не такой как тебе надо
2 zulu_mix
 
15.11.12
12:09
если б запрос умел стирать носки, ты бы всенепременно воспользовался этой фичей, да?
3 МихаилМ
 
15.11.12
12:11
сумма округлений не равна округлению суммы
4 Homer
 
15.11.12
12:12
поле1 + поле2 не равно поле3
5 Sammo
 
15.11.12
12:12
Во твором объединение где *15?
6 Homer
 
15.11.12
12:13
да это разные примеры, что бы наглядней было
7 Classic
 
15.11.12
12:15
(6)
Чет вообще не наглядно.
(3)
При определенных алгоритмах равна
8 Homer
 
15.11.12
12:15
примеры расчета.
9 shuhard
 
15.11.12
12:15
(0)[ как сделать ]
ни как
10 Sammo
 
15.11.12
12:15
(4) И? Ну не равно. В первых двух ошибки за счет округления
11 Homer
 
15.11.12
12:16
как сделать.
мне надо что бы
 (ВЫРАЗИТЬ(25689.86 / 162.17 КАК ЧИСЛО(15, 2))) * 15.00 КАК Поле1, //2 376,15

   (ВЫРАЗИТЬ(3853.48 / 162.17 КАК ЧИСЛО(15, 2))) * 15.00 КАК Поле2,  //356,4

был равен
(ВЫРАЗИТЬ(29543.34 / 162.17 КАК ЧИСЛО(15, 2))) * 15.00 КАК Поле3  //2 732,7
12 Sammo
 
15.11.12
12:17
(ВЫРАЗИТЬ(25689.86 / 162.17 * 15 КАК ЧИСЛО(15, 2)))
Но все равно возможны копейки
13 Homer
 
15.11.12
12:17
(12) есть сумма 29543.34 необходимо поделить на 162.17 и эту сумму(округленную до копеек)
14 Homer
 
15.11.12
12:18
и лишь потом умножить
15 Лефмихалыч
 
15.11.12
12:19
(0) погрешности, связанные с округлениями, будут всегда. Надо алгоритм писать так, чтобы он эти погрешности учитывал, а не об запрос головой биться
16 Homer
 
15.11.12
12:20
запрос 2000 строк как то не до этого было
17 Homer
 
15.11.12
12:21
до этого все работало, тут видимо цифры совпали неудачные
18 Светлый Гений
 
15.11.12
12:26
(0) никак
19 Sammo
 
15.11.12
12:28
(13) Вам чтобы сумма сходилась или "эту сумму, округленную"?
Как вариант, одну из сумм не персчитывайте, а берите как разность двух других.
20 drcrasher
 
15.11.12
12:32
(0) НО ЗАЧЕМ?!
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший