Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/55: Рейтинг темы: голосов - 55, средняя оценка - 4.82
-7 / 3 / 1
Регистрация: 22.09.2017
Сообщений: 242

Как округлить decimal с заданной точностью?

24.06.2018, 22:07. Показов 10444. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как округлить положительное decimal с точностью до определенного количества знаков после запятой в сторону возрастания и убывания? decimal.Round не подходит, т.к. округляет и в большую и в меньшую сторону, в зависимости от числа.
Сделал так для округления до 8-го знака:
C#
1
2
3
const decimal is100000000 = 100000000;
decimal d1 = Math.Floor(is100000000 * level1) / is100000000;
decimal d2 = Math.Ceiling(is100000000 * level2) / is100000000;
Но нет ли чего попроще?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.06.2018, 22:07
Ответы с готовыми решениями:

Как округлить double с точностью до 5
Например, 17 округлить до 15; 18 до 20; 22,5 до 20; 22,6 до 25?

Как округлить double с точностью до числа
Уже второй день штурмую гугл. и все что в нем есть, все не работает, может кто знает рабочий вариант? мне можно даже не округлять, а хотябы...

Конструктор объекта Decimal не создаёт числа с нужной точностью (python 3.3.5)
Друзья! Сперва работаем со строками: Python 3.3.5 (v3.3.5:62cf4e77f785, Mar 9 2014, 10:37:12) on win32 Type "copyright",...

16
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
25.06.2018, 11:27
C#
1
2
3
4
5
6
 public static decimal TruncateDecimal(decimal value, int precision)
        {
            decimal step = (decimal)Math.Pow(10, precision);
            decimal tmp = Math.Truncate(step * value);
            return tmp / step;
        }
1
-7 / 3 / 1
Регистрация: 22.09.2017
Сообщений: 242
25.06.2018, 18:22  [ТС]
Это округление в меньшую сторону. А в большую?
0
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
25.06.2018, 18:36
Через Round, там вторым параметром задается один из двух типов округления. Один банковский, другой в большую сторону.
0
-7 / 3 / 1
Регистрация: 22.09.2017
Сообщений: 242
25.06.2018, 18:37  [ТС]
freeba, см. самое первое сообщение.
0
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
25.06.2018, 18:42
Passerby, см. документацию по decimal.Round
0
-7 / 3 / 1
Регистрация: 22.09.2017
Сообщений: 242
25.06.2018, 18:58  [ТС]
freeba, уже смотрел https://msdn.microsoft.com/ru-... .110).aspx "Параметр задает правило округления значения, если оно находится ровно посредине между двумя другими числами."
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
27.06.2018, 11:39
Passerby, окей, что вы подразумеваете под єтим?
Цитата Сообщение от Passerby Посмотреть сообщение
в сторону возрастания и убывания
и как должно округлить такие значения?
1,5
2,5
0
-7 / 3 / 1
Регистрация: 22.09.2017
Сообщений: 242
27.06.2018, 12:34  [ТС]
Никак. Округление до целого не интересует. Подразумеваю: https://ru.wikipedia.org/wiki/... 0%B8%D0%B5
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
27.06.2018, 13:33
Passerby, шикарно, но вы же понимаете что в один момент можете либо округлить к большему, либо к меньшему. Одновременно не получится, разве что возращать два числа.

исходя из вашей изначальной писанины, все же смахивает что вам нужно матиматическое округление до восьмого знака, делается так

C#
1
Math.Round(decimalValue, 8, MidpointRounding.AwayFromZero)
0
-7 / 3 / 1
Регистрация: 22.09.2017
Сообщений: 242
27.06.2018, 13:37  [ТС]
Что мне нужно, я написал.
0
Эксперт .NET
 Аватар для Usaga
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,435
28.06.2018, 06:05
Цитата Сообщение от Passerby Посмотреть сообщение
округлить положительное decimal с точностью до определенного количества знаков после запятой в сторону возрастания и убывания
Это как? Зелёный свисток вверх?
0
-7 / 3 / 1
Регистрация: 22.09.2017
Сообщений: 242
28.06.2018, 12:39  [ТС]
Вы читайте правильно: не добавляйте в уме "одно и то же" и "одновременно".
0
Эксперт .NET
 Аватар для Usaga
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,435
28.06.2018, 12:42
Passerby, выбирайте: Math.Truncate, Math.Round, Math.Floor, Math.Ceil.
0
-7 / 3 / 1
Регистрация: 22.09.2017
Сообщений: 242
28.06.2018, 12:53  [ТС]
Usaga, вам делать нечего? Или не читали первое сообщение?
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
28.06.2018, 12:58
Цитата Сообщение от Passerby Посмотреть сообщение
Но нет ли чего попроще?
нет.
1
Эксперт .NET
 Аватар для Usaga
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,435
28.06.2018, 13:06
Passerby, вам доступны четыре метода округления. Если они вам не подходят, то изобретайте велосипед)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.06.2018, 13:06
Помогаю со студенческими работами здесь

Округлить любое вещественное число до определённого количества знаков с математической точностью
Пишем Microsoft Visual Studio -> Win32 Console Application -> C++. Нужно написать функцию, которая округляет любое вещественное число до...

как посчитать с заданной точностью
Сделал программу по данной задаче, все работает, таблица выводится, но вот что делать с заданной точностью? Кто может подскажите...

Не работает запрос с одинаковыми типами данных c# decimal, SQL Server Decimal(18,2)
Здравствуйте, не понимаю почему не проходит запрос на бд, с одинаковыми типами данныхDecimal(18,2) число 1000,00 проходит, а 1000,35...

Как вычислить ряд с заданной точностью.
Вычислить значение "y". Подсчет вести до тех пор, пока очередной член рядя не будет по модулю < "ε". Значение...

Как вычислять выражение с заданной точностью?
Хотел до уточнить, как например вычислять какое-то выражение с заданной точностью. Больше всего меня пугает именно заданная точностью....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru