Округление всегда в бОльшую сторону

1. adaviya 22.07.13 15:04 Сейчас в теме
Привет!
Кто-нибудь делал округление всегда в бОльшую сторону?
например, если число 10.1 - должно быть 11.
спасибо!
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. tolyan_ekb 104 22.07.13 15:07 Сейчас в теме
(1) adaviya, дарю
если сумма-Цел(сумма)>0 тогда сумма=сумма+1; 
Sejix; vika64; +2 Ответить
3. Walker.pro 7 22.07.13 15:45 Сейчас в теме
(2) tolyan_ekb,
если сумма-Цел(сумма)>0 тогда сумма=Цел(сумма)+1;
ilya4; ger_kar; ustinov_greendale; a.rezyhin; ch-15; ivprovotorov; +6 Ответить
4. tolyan_ekb 104 22.07.13 15:52 Сейчас в теме
(3) Walker.pro, да малость ошибься
7. YNik 22.07.13 21:04 Сейчас в теме
(1) adaviya,
Сумма = Окр(Сумма+0.5,0,0);
native-api; WhiteOwl; AndreySchel; AndrewVVS; user785225; Sejix; LifeRock; aleksey2; user1297929; ONLYTILT; КДЕ; tatoshka0403; Tolpinski; Gendelf; zuxelzz; Kolesonik; noctar; MaZaHacKa_13; Elisey654321; moralex2k; insurgut; user1088651; neo-ti; Dizel; klaus38; Kazaams; ckamakc; Jeka44; zoikins; kirbox; stasdivin; Kordyukov; sertak; Aleksandr_prof; MrTom; wowik; wertep; Tavalik; user949348; Xephone; DreamcastMD; SpartakM; KirinaAS; myjob1c; Merkalov; 02RUSlan; s1koka; Дмитрий74Чел; SagittariusA; rule6; dmitrii665; ShpiN; qwertyk; ger_kar; savauu; Roman_Go; vika64; Ingraf; dsdred; San4ez; Rudakov_D; olenka-ul; ustinov_greendale; ekomova; Insanity; SP2000; greenLiss; HomeInc; MrGreat; nadjav; lshaton; valleha; kihoxef532; etmarket; MrTwisterKRR; MherArsh; bobr_dobr; murza; Dmitrii D; Gureev; +80 Ответить
8. brunhilda 15.05.19 06:47 Сейчас в теме
(7) вот это крутое решение! спасибо
9. Merkalov 8 18.09.19 10:23 Сейчас в теме
(7) Если сумма = 10, тогда получаем 11, что является ошибкой.
user1297929; evgenepc; +2 1 Ответить
10. spacecraft 18.09.19 10:29 Сейчас в теме
(9)
Если сумма = 10, тогда получаем 11, что является ошибкой.

это где так будет считать? Код в (7) для суммы 10 посчитает округление = 10. Параметры там не просто так указаны.
native-api; Риник; insurgut; Kazaams; mirrr; +5 Ответить
38. Риник 13 20.05.23 15:09 Сейчас в теме
(7) метод нерабочий

если Сумма = 10, то получится 11.
42. alexis_g 18.09.23 06:12 Сейчас в теме
(38) Вы прежде чем что-то сказать проверяйте хотя бы в табло:

Окр(10+0.5,0,0)

Результат
10
5. midavp 1 22.07.13 16:42 Сейчас в теме
ЦелаяЧасть = Цел(Число);
ДробнаяЧасть = Число - ЦелаяЧасть;
КонечноеЧисло = ?(ДробнаяЧасть=0,ЦелаяЧасть,ЦелаяЧасть +1);
Anjo86; ger_kar; +2 Ответить
6. adaviya 22.07.13 17:07 Сейчас в теме
спасибо! Все гениальное просто!
11. sondarium 177 23.12.19 11:09 Сейчас в теме
Функция ОкрВсегдаВверх(ВходЧисло, РазрядОкругления)
	
	Возврат ?(ТипЗнч(ВходЧисло) = Тип("Число"), Окр(ВходЧисло + 5 * Pow(10, -РазрядОкругления - 1), РазрядОкругления, РежимОкругления.Окр15как10), Неопределено);
	
	//Если ТипЗнч(ВходЧисло) <> Тип("Число") Тогда
	//	Возврат Неопределено;
	//КонецЕсли;
	//
	//Прибавка = 5 * Pow(10, -РазрядОкругления - 1); // 5 * 10^(-x - 1)
	//Результат = Окр(ВходЧисло + Прибавка, РазрядОкругления, РежимОкругления.Окр15как10);
	//
	//Возврат Результат;
	
КонецФункции
Показать
Светлый ум; aviconsult; user635795_aleksej.alex2011; TerveRus; +4 Ответить
12. anig99 2843 09.12.20 20:34 Сейчас в теме
Окр(Число + 0.5, 0, РежимОкругления.Окр15как10);
levante90; STivO; AR_18; +3 Ответить
13. napan 34 15.03.23 15:29 Сейчас в теме
(12)
РежимОкругления.Окр15как10);

Не правильно, пример: 13,4, получаем 13,4+0,5 = 13.9 Окр в меньшую сторону получится 13, а необходимо получить 14!
14. bdennis 15.03.23 15:39 Сейчас в теме
(13) Правильно. 13.9 при РежимОкругления.Окр15как10 будет округлено до 14.
15. napan 34 15.03.23 19:14 Сейчас в теме
(14)
Окр15как10

Правильно: Окр15как20 , а не Окр15как10 - это же в меньшую сторону.
16. spacecraft 15.03.23 19:30 Сейчас в теме
(15) попробуйте в отладке хотя бы. Этот параметр относится исключительно к цифре 5 на определенной позиции. На стальные цифры не оказывает никакого влияния.
17. bdennis 15.03.23 20:56 Сейчас в теме
(15) при Окр15как20 13 + 0.5 станет 14, что странно. Правильно Окр15как10.
19. пользователь 15.03.23 21:49
Сообщение было скрыто модератором.
...
20. ut2k5 15 20.03.23 15:36 Сейчас в теме
(19) что мешает проверочную обработку написать и удостовериться, что работает:

Сч = 0;
	Пока Сч < 24 Цикл
		
		Результат	= Окр(Сч + 0.5, 0, РежимОкругления.Окр15как10);
		ТекстШаблона			= "%1 = %2";
		СообщениеПользователю	= СтрШаблон(ТекстШаблона, Сч, Результат);
		ОбщегоНазначения.СообщитьПользователю(СообщениеПользователю);
		
		Сч	= Сч + 0.1;
				
	КонецЦикла;
Показать
21. пользователь 20.03.23 15:57
Сообщение было скрыто модератором.
...
22. Dr.HiHi 3 20.03.23 16:12 Сейчас в теме
(20) что за магия?? %)))
целое число
Окр(Число + 0.499999)

до 1-го знакак после запятой
Окр(Число + 0.049999, 1)

до 2-х
Окр(Число + 0.004999, 2)


длина числа 0.499999.. - зависит от входящего числа
если, например, нужно целое число, а на вход дали 1.001 и написать
Окр(Число + 0.49)
, но на выходе будет 1, но если написать
Окр(Число + 0.499)
, то сработает ;))
24. пользователь 20.03.23 16:40
Сообщение было скрыто модератором.
...
27. Dr.HiHi 3 20.03.23 17:14 Сейчас в теме
(24) в смысле универсальный??
а чем не универсальный??
универсального не будет, так как есть один нюанса и это разрядность
если передавать разрядность, то тогда что-то типа этого
Окр(Число + 0.4999999999999 / ?(разрядность > 0, 10 * разрядность, 1), разрядность)

да и в запросах, если нужно целое число, то всегда спасает + 0.499999, так как товар не может быть половинкой
при округлении, например, цены в запросе с 2-мя знаками, то тоже спасает
а какой-то универсальный механизм с каким-то построчным окгруглением число - то это жесть
28. пользователь 20.03.23 17:19
Сообщение было скрыто модератором.
...
29. Dr.HiHi 3 20.03.23 20:20 Сейчас в теме
(28) тогда таких людей называют душнилами %))
есть шаблоны корректного решения, а реализации опытный программист сам придумает как использовать метод расчета...
или это будет метод, где подается одно число и параметры, относительно которых нужно расчитать
или это будет использоваться в запросе, где происходят логистические вычисления для планирования
30. пользователь 20.03.23 21:06
Сообщение было скрыто модератором.
...
31. Dr.HiHi 3 20.03.23 22:29 Сейчас в теме
(30) ну тогда жду правильный универсальный вариант от "гуру" для запроса
32. пользователь 20.03.23 23:19
Сообщение было скрыто модератором.
...
33. Dr.HiHi 3 20.03.23 23:48 Сейчас в теме
(32) "гуру" обосрался %))
садитесь 2
p.s. не способны помочь, то хоть не мешайте остальным помогать

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

почитайте что такое хардкор, а что не является хардкором
почитайте о тяжелости вычислений... хотя бы про +, -, *, /

p.s. простите, но я не достоен обучаться у такого "гуру"
дискуссия окончена.
34. Dr.HiHi 3 21.03.23 00:03 Сейчас в теме
(32) и еще в догонку
по вашему "идеальному" расчету

исходное -9
всегда в большую сторону
разрядность -2
результат -100

как так??
на вход -9, и в большую сторону, а в итоге -100
вопрос... что больше -9 или -100??
35. пользователь 21.03.23 00:48
Сообщение было скрыто модератором.
...
39. Риник 13 20.05.23 15:11 Сейчас в теме
(20) да можно просто в отладчике проверить и убедиться, что не работает. Не работает с 10, 10.6, 10.7, 10.8
Прикрепленные файлы:
40. spacecraft 20.05.23 15:49 Сейчас в теме
(37) это с какой такой логики целое число 10 должно округляться до 11?
Так что все верно, что 10 округляется до 10.
(39) все что между 10 и 11 округляется до 11. Целые числа не должны изменяться. При условии округления до целых чисел.
41. Риник 13 20.05.23 16:19 Сейчас в теме
(40) да, вы правы, погорячился)
37. Риник 13 20.05.23 15:08 Сейчас в теме
(12)
Окр(Число + 0.5, 0, РежимОкругления.Окр15как10);


Число = 10;

10+0.5 = 10.5, округляем 15 как 10 получаем 10.

Метод нерабочий
18. SlavaKron 15.03.23 21:24 Сейчас в теме
Округление в 1С – просто бессмертная задача.
23. Romeo_1c_programmer 29 20.03.23 16:34 Сейчас в теме
ЧислоХ = ?(Цел(ЧислоХ) = ЧислоХ, ЧислоХ, Цел(ЧислоХ)+1);
25. пользователь 20.03.23 16:40
Сообщение было скрыто модератором.
...
26. Romeo_1c_programmer 29 20.03.23 16:53 Сейчас в теме
(25)тогда - как было предложено в (11)
43. 13kawaii13 13.10.23 17:19 Сейчас в теме
(37)
Окр(Число + 0.5, 0, РежимОкругления.Окр15как10);


Все работает

На скрине табло с примерами
Окр(10 + 0.5, 0, РежимОкругления.Окр15как10) = 10
Окр(10.01 + 0.5, 0, РежимОкругления.Окр15как10) = 11
Окр(10.99 + 0.5, 0, РежимОкругления.Окр15как10) = 11
Прикрепленные файлы:
44. user1333968 29.03.24 11:42 Сейчас в теме
Могу предложить свой вариант округления до целого всегда в большую сторону:

РезультатОкругления = Окр(Число,0);
Если Окр(Число,1)>Окр(Число,0) Тогда
        РезультатОкругления = РезультатОкругления +1
КонецЕсли;


В запросе аналогичный алгоритм с помощью ВЫРАЗИТЬ и ВЫБОР...
45. spacecraft 29.03.24 13:13 Сейчас в теме
46. user1333968 29.03.24 14:12 Сейчас в теме
Будет 1. Вы правы, некорректно получилось...
Оставьте свое сообщение

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