Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Обережно ОКР(371.8749999,2)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
awp
Доброго дня.

Столкнувся з проблеммою при округлені числа 371.8749999.
Функція ОКР видає 371.87, а потрібно 371.88

Я так розумію що при округленні до 2 воно відсікає все після сотих і починає округлювати.

Може хто сталкувався і підскаже як вирішити.....


awp @ Сегодня, 12:22 необходимо зарегистрироваться для просмотра ссылки ,
Сам спитав - сам відповів smile.gif

Може кому знадобиться (трофейне)

Функция ОкруглитьПоПравилам (Число, Разрядность) Экспорт
    нЧислоРазрядность             = Окр(Число, Разрядность,     РежимОкругления.Окр15как10);
    уЧислоРазрядность             = Окр(Число, Разрядность+1, РежимОкругления.Окр15как10);
    Остаток                     = ?(уЧислоРазрядность<нЧислоРазрядность, 0, Прав((уЧислоРазрядность-нЧислоРазрядность),1));
    ПредшествуетНечетноеЧисло    = Прав(нЧислоРазрядность,1)%2;
    Возврат ?((Число(Остаток)=5 И ПредшествуетНечетноеЧисло) ИЛИ Число>уЧислоРазрядность, Окр(уЧислоРазрядность,Разрядность,РежимОкругления.Окр15как20), нЧислоРазрядность);
КонецФункции
andreydv87
awp @ Сегодня, 12:32 необходимо зарегистрироваться для просмотра ссылки ,
С чего Вы решили, что должно быть 371.88? Если вспомнить математику, то <0.5 округляется в меньшую сторону, а >0.5 в большую.
Petre
awp @ Today, 11:32 необходимо зарегистрироваться для просмотра ссылки ,
Проблема у тому, що ви приймаєте це значення у періоді, а програма - ні. Програма взагалі не працює із нераціональними числами у періоді.
Запропонований варіант - не математичне заокруглення, а т.з. "фінансове". Воно придатне для окремих випадків.
awp
andreydv87 @ Сегодня, 13:10 необходимо зарегистрироваться для просмотра ссылки ,
А якщо = 0.5 ?

Цитата(Petre @ 22.12.22, 13:32) необходимо зарегистрироваться для просмотра ссылки
Запропонований варіант - не математичне заокруглення, а т.з. "фінансове". Воно придатне для окремих випадків.


Так 1С начебто фінансова?

Справа в тому що рівняють по Excel - тому і граюся з різними функціями типу: ПЛТ ; ВСД ....
Petre
awp @ Yesterday, 16:47 необходимо зарегистрироваться для просмотра ссылки ,
В екселі заокруглення 371,8749999 = 371,87. Це - загальноприйняте правило заокруглення.
andreydv87
Цитата(awp @ 22.12.22, 17:47) необходимо зарегистрироваться для просмотра ссылки
А якщо = 0.5 ?

То вчіть математику за 5 клас!!!

awp @ Вчера, 17:47 необходимо зарегистрироваться для просмотра ссылки ,

А якщо цікаво і хочете зробити для себе, то подивіться в конфігурації "Роздрібна торгівля" або "Управліня торгівлею".
В цих конфігураціях у правилах ціноутворення є округлення в більшу сторону.
В видах цін (якщо не поміляюсь) є можливість вибору методу округленя (математичний або фінансовий).
awp
Ок, учту все ваши пожелания и советы.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.