Можно ли округлить число в большую или меньшую сторону в зависимости от условия, в интернете видел только в общую либо меньшую, а как реализовать и так так?

1. G_106344807921151868538 17.01.25 10:37 Сейчас в теме
Допустим если 1.4444= 1.444 и 1.4446=1.445
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 81 17.01.25 10:41 Сейчас в теме
(1) Если нужно округлять в бОльшую сторону, то добавьте "половину цены деления" и оно округлится автоматически:

1.444 + 0.0005 = 1.445
3. G_106344807921151868538 17.01.25 10:54 Сейчас в теме
4. nomad_irk 81 17.01.25 11:04 Сейчас в теме
(3) если округляется до 3х знаков после запятой, то можно ничего не делать - округление вниз будет выполнено по математическим правилам
10. G_106344807921151868538 17.01.25 13:14 Сейчас в теме
(4) все таки нужно чтобы либо в большую либо в меньшую округлял через если иначе это как выглядеть будет? Просто оставить не работает
11. nomad_irk 81 17.01.25 13:21 Сейчас в теме
(10) лично я не совсем понимаю, что вам нужно сделать в итоге.
Если вам нужно
1.4444 = 1.444 и 1.4446=1.445

то это обычное математическое округление и никаких дополнительных условий не нужно.

Если вы хотите именно задавать направление округления, то будет что-то вроде:

Если ОкруглениеВВерх Тогда

       Значение = Значение + ПоловинаЦеныДеления;

КонецЕсли;


В данном случае вся сложность будет в определении этой самой ПоловиныЦеныДеления.
Нужно будет проверять количество знаков после запятой у квалификатора числа, делить 1 на 10 /возводить 10 в отрицательная степень и делить все на 2
14. user5300 1077 17.01.25 16:35 Сейчас в теме
(1) Костыль )
Ост = СтрЗаменить(Формат(Количество , "ЧДЦ=4"), Формат( Количество , "ЧДЦ=3"),"");	
	ОкрКоличество = Число(Формат( Количество , "ЧДЦ=3"))  + ?(Число(Ост) < 5 ,0,1) ;
5. MissionOnly 3 17.01.25 11:46 Сейчас в теме
6. nomad_irk 81 17.01.25 11:48 Сейчас в теме
(5) и получите округление по математическим правилам, что может быть не равно округлению вверх/вниз
7. spacecraft 17.01.25 12:05 Сейчас в теме
(6) в условии задачи и требуется математическое округление.
8. nomad_irk 81 17.01.25 12:08 Сейчас в теме
(7) так же в условии задачи округление требуется делать вверх/вниз по некоему условию.....
9. spacecraft 17.01.25 12:17 Сейчас в теме
(8) и приведены примеры того, что должно получиться.
Это обычное математическое округление из коробки.
12. MissionOnly 3 17.01.25 14:53 Сейчас в теме
(6) Окр(Чис,3,ФункцияУправляющаяРежимом()) - где,

ФункцияУправляющаяРежимом() принимает одно из значений Окр15как10 или Окр15как20.

Или пиши свою функцию, т.к. это будет уже не ОКРУГДЕНИЕ, а приведение числа к определенному виду в зависимости от параметров.
13. user2107191 17.01.25 14:56 Сейчас в теме
(12) Гениально!!! А если надо 1,45 округлить до 2,0?
15. SlavaKron 17.01.25 17:11 Сейчас в теме
Я вот эту фразу не понимаю:
видел только в большую либо меньшую, а как реализовать и так и так?
Как округлить и в большую и в меньшую сторону одновременно? Тут ведь всегда либо-либо.
16. miniogn 44 17.01.25 21:59 Сейчас в теме
Округление и так работает, как тебе требуется - одновременно и в большую и в меньшую сторону. Если брать обычный, всем привычный способ.
Если отбрасываемый разряд меньше 5, то идет в меньшую сторону, если 5 и больше, то идет в большую сторону. То есть как бы вот одновременно.
То есть в (5) всё правильно написали.

&НаКлиенте
Процедура Команда1(Команда)

	ч = 1.4444;
	Сообщить("" + ч  + "=" + Окр(ч, 3));
	
	ч = 1.4446;
	Сообщить("" + ч  + "=" + Окр(ч, 3));
	
КонецПроцедуры
Показать


Результат:

1,4444=1,444
1,4446=1,445

PS. Но вообще всё могут поменять "условия", про эти условия что-то и не написано...
17. user2107191 17.01.25 23:32 Сейчас в теме
(16)
Но вообще всё могут поменять "условия", про эти условия что-то и не написано...
А это важно? Ну давай на ходу придумаю тебе условие: Если общая сумма делится на 12 копеек без остатка - то округлять в меньшую сторону до 10 рублей, иначе - в большую сторону до 1 рубля.
Бред? Методологически да. Логически - нет. Логика оперирует только двумя понятиями - Истина и Ложь. Выполняется условие (исполняем первы вариант "так") или не выполняется (исполняем второй вариант "либо так"). Само условие неважно абсолютно.

Абстракция - наше все. Абстракции не интересно знать про то, что происходит за её пределами.
18. miniogn 44 17.01.25 23:58 Сейчас в теме
(17) То есть вопрос про условие, и достаточно было написать Если условие Тогда окр1... Иначе Окр2... КонецЕсли; ? Я услышал вопрос про округление, про одновременное использование округления в большую и меньшую сторону. Но сделал ремарку, что условие не определено. Может его условие это значение последней цифры в числе...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот