|
v7: Странно работает функция Окр() в 1С 7.7 |
☑ |
0
BruS
15.01.20
✎
18:28
|
Недавно у клиента возникла проблема с результатом вычисления (пропадала 1 копейка).
Стал копать и нашел то, от чего офигел:
Окр(411.79/6*3, 2, 1) = 205.89
Окр(411.79*3/6, 2, 1) = 205.9
без округления результат один и тот же: 411.79*3/6 = 205.895 и 411.79/6*3 = 205.895
Кто-нить вообще может это как-то это объяснить.
Релиз последний 7.70.027
|
|
1
palpetrovich
15.01.20
✎
19:00
|
(0)если без округления результат один и тот же, то
хитраяЦифра = 411.79/6*3
Окр(хитраяЦифра , 2, 1) = 205.89
|
|
2
BruS
15.01.20
✎
19:09
|
Так правильный результат то должен быть 205.9
|
|
3
Builder
15.01.20
✎
19:31
|
(2) С чего бы? Округление до 2-х знаков указано.
А вот прикол воспроизвелся, занятно :)
|
|
4
BruS
15.01.20
✎
19:44
|
Пораскинув мозгами пришел к выводу, что причина в ограничении разрядности числа в 7.7 и получении в результате деления 6 в периоде.
Кстати этот эффект (проблемой уже не называю) не только в 7.7. Написав небольшой запрос в SQL получил такой же результат:
SELECT ROUND(411.79 / 6 * 3, 2) = 205.89
SELECT ROUND(411.79 * 3 / 6, 2)) = 205.9
в 8-ке и excel такого нет, видимо какой-то другой механизм округления используется.
В общем господа программисты учитывайте это при разработке.
|
|
5
mikecool
15.01.20
✎
22:29
|
(4) правильнее результат получается когда ты большее число делишь на что то, т.е. сначала произведи все перемножения, а затем уже дели
ты еще в питоне попробуй посчитать числа с плавающей точкой - там вообще мозг завернется
|
|
6
Злопчинский
15.01.20
✎
23:30
|
"шо, опять?"
рассматривалось неоднократно, поищи на мисте
|
|