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; КонецЕсли; КонецЕсли; Знач = ...+Перем; //собираем обратно исходное число, уже округлив последнюю цифру по правилам Возврат Знач; КонецФункции
В начало страницы 
|
Перейти на форум: