Доброго дня.
Столкнувся з проблеммою при округлені числа 371.8749999.
Функція ОКР видає 371.87, а потрібно 371.88
Я так розумію що при округленні до 2 воно відсікає все після сотих і починає округлювати.
Може хто сталкувався і підскаже як вирішити.....
awp @ Сегодня, 12:22
,
Сам спитав - сам відповів
Може кому знадобиться (трофейне)
Функция ОкруглитьПоПравилам (Число, Разрядность) Экспорт
нЧислоРазрядность = Окр(Число, Разрядность, РежимОкругления.Окр15как10);
уЧислоРазрядность = Окр(Число, Разрядность+1, РежимОкругления.Окр15как10);
Остаток = ?(уЧислоРазрядность<нЧислоРазрядность, 0, Прав((уЧислоРазрядность-нЧислоРазрядность),1));
ПредшествуетНечетноеЧисло = Прав(нЧислоРазрядность,1)%2;
Возврат ?((Число(Остаток)=5 И ПредшествуетНечетноеЧисло) ИЛИ Число>уЧислоРазрядность, Окр(уЧислоРазрядность,Разрядность,РежимОкругления.Окр15как20), нЧислоРазрядность);
КонецФункции
awp @ Сегодня, 12:32
,
С чего Вы решили, что должно быть 371.88? Если вспомнить математику, то <0.5 округляется в меньшую сторону, а >0.5 в большую.
awp @ Today, 11:32
,
Проблема у тому, що ви приймаєте це значення у періоді, а програма - ні. Програма взагалі не працює із нераціональними числами у періоді.
Запропонований варіант - не математичне заокруглення, а т.з. "фінансове". Воно придатне для окремих випадків.
andreydv87 @ Сегодня, 13:10
,
А якщо = 0.5 ?
awp @ Yesterday, 16:47
,
В екселі заокруглення 371,8749999 = 371,87. Це - загальноприйняте правило заокруглення.
Ок, учту все ваши пожелания и советы.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua