Modber Сообщество
профессионалов по 1С

Варианты округления

Варианты округления
  
Сообщений: 1

0
Хотелось бы округлить величины так, как понадобится в конкретном нестандартном случае. Например, 0,1 к 0; 0,6 к 0,5. Если потребуется, то наоборот: 0,1 к 0,5, а 0,6 к 1,0. Как это можно осуществить?
Грамота
Сообщений: 63

0
Напишите свою функцию подобную стандартной ОКР, пропишите в ней все возможные варианты и правила.В случае возникновения трудностей воспользуйтесь моими "наметками". Сейчас базы нет под рукой, поэтому код, скорее всего придется подкорректировать.

"Например, 0,1 к 0; 0,6 к 0,5. Если потребуется, то наоборот: 0,1 к 0,5, а 0,6 к 1,0"
Знач — передаваемое число
Формат — числовое значение
> 0 количества знаков дробной части (после запятой)
= 0 до целого числа
< 0 до указанного количества знаков целой части
Округление 0 — в меньшую сторону, 1 — в большую.

Функция МоеОкр(Знач, формат, Округление)
Разряд = 0; Перем = 0;
Разряд = POW(10,Формат);// 10 в такой-то степени
Перем = Знач/Разряд — Цел(Знач)//здесь НЕВЕРНО, нужно выцепить последнюю цифру числа. Расчетами, к сожалению, некогда заниматься

Если Округление = 0 Тогда
Если Перем < 0.5 Тогда
Перем = 0;
Иначе
Перем = 0.5;
КонецЕсли;
Иначе
Если Перем <= 0.5 Тогда
Перем = 0.5;
Иначе
Перем = 1;
КонецЕсли;
КонецЕсли;
Знач = ...+Перем; //собираем обратно исходное число, уже округлив последнюю цифру по правилам
Возврат Знач;
КонецФункции
В начало страницы 
|
Перейти на форум: