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

iblohin

Client
Регистрация
10.09.2015
Сообщения
64
Благодарностей
2
Баллы
8
Ребят, подскажите по C#

Есть сниппет на c# http://zennolab.com/wiki/ru:knowledgebase:variables , в нем математическое действие:

а / b

нужно, чтобы если число выходит дробное, то оно бы округлялось бы всегда в большую сторону.

Например, 1300 / 210 = 6,19, и его C# сейчас округляет до 6 и возвращает сразу 6, а нужно округлять до 7 и возвращать 7.

Как это сделать?
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 367
Благодарностей
3 292
Баллы
113
Код:
float a = Convert.ToSingle(project.Variables["a"].Value);
float b = Convert.ToSingle(project.Variables["b"].Value);
return Math.Ceiling(a / b); // округление в большую сторону
 
Последнее редактирование:

mihanat

Client
Регистрация
26.02.2017
Сообщения
32
Благодарностей
18
Баллы
8
Извините пожалуйста, великие гуру с#, ну как же мне просто округлить число 5. 76 в 6 а 5.47 в 5, как же все тяжело, как же мне убрать эту гадость из лога, спасите умоляю:
Выполнение действия CSharp OwnCode Входная строка имела неверный формат.
 

Art4D

Client
Регистрация
22.08.2014
Сообщения
276
Благодарностей
48
Баллы
28
Извините пожалуйста, великие гуру с#, ну как же мне просто округлить число 5. 76 в 6 а 5.47 в 5, как же все тяжело, как же мне убрать эту гадость из лога, спасите умоляю:
Выполнение действия CSharp OwnCode Входная строка имела неверный формат.
Math.Round(a)
где a - число или переменная, которая явл. числом
 

Art4D

Client
Регистрация
22.08.2014
Сообщения
276
Благодарностей
48
Баллы
28
Выполнение действия CSharp OwnCode Входная строка имела неверный формат.
Дробные числа должны быть через запятую, а не точку.
Или записываться в сниппете так:
PHP:
double a = double.Parse(project.Variables["a"].Value.Replace(",", "."), System.Globalization.CultureInfo.InvariantCulture);
 
  • Спасибо
Реакции: maxLexx

mihanat

Client
Регистрация
26.02.2017
Сообщения
32
Благодарностей
18
Баллы
8
Великий кот, спасибо, но я глуп очень, что б осознать адекватно написанное тобою, не можешь ли ты тупо скинуть сюда как из переменной , блин, a, в которой содержится 13.82 сделать 14, а 12,05 12, спасибо за
double a = double.Parse(project.Variables["a"].Value.Replace(",", "."), System.Globalization.CultureInfo.InvariantCulture);

, извини за наглость( и тупость конечно), сам сниппет, пожалуйста скинь
 

Art4D

Client
Регистрация
22.08.2014
Сообщения
276
Благодарностей
48
Баллы
28
Держите, сер.
PHP:
double a = double.Parse(project.Variables["a"].Value.Replace(",", "."), System.Globalization.CultureInfo.InvariantCulture);
return Math.Round(a);
 

Вложения

  • Спасибо
Реакции: Gunjubasik

mihanat

Client
Регистрация
26.02.2017
Сообщения
32
Благодарностей
18
Баллы
8
return Math.Round(a);
Знай, кот, что еще один убогий на этом свете, стал счастливым, спасибо, эту хрень забыл дописать, огромное спаибо!!!! Порсто невероятно спас
 

justanotherVar

Пользователь
Регистрация
18.09.2016
Сообщения
66
Благодарностей
2
Баллы
8
А как округлить в меньшую сторону? В ближайшую то понятно.
 

kermyt

Новичок
Регистрация
14.10.2017
Сообщения
3
Благодарностей
3
Баллы
3
А как округлить в меньшую сторону? В ближайшую то понятно.
Код:
float a = Convert.ToSingle(project.Variables["a"].Value);
float b = Convert.ToSingle(project.Variables["b"].Value);
return Math.Ground(a / b); // округление в меньшую сторону
 

justanotherVar

Пользователь
Регистрация
18.09.2016
Сообщения
66
Благодарностей
2
Баллы
8

doc

Client
Регистрация
30.03.2012
Сообщения
8 605
Благодарностей
4 596
Баллы
113
Math.Floor(a/b) - округление в меньшую
 

justanotherVar

Пользователь
Регистрация
18.09.2016
Сообщения
66
Благодарностей
2
Баллы
8
Так, может конечно и через одно место получилось, проще метод написать в ООП для этого но скруглять в меньшую средствами зенки получилось так.
Код:
decimal a=10;
decimal b= 6;
decimal c=a/b;
string co=c.ToString();
string strPattern=@".*(?=,)";
string strRegexResult = new Regex(strPattern).Match(co).Value;
int coc=int.Parse(strRegexResult);
return strRegexResult;
 

justanotherVar

Пользователь
Регистрация
18.09.2016
Сообщения
66
Благодарностей
2
Баллы
8

doc

Client
Регистрация
30.03.2012
Сообщения
8 605
Благодарностей
4 596
Баллы
113

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
Ребят, подскажите плиз формулу по округлению, а то не соображу никак.
Есть список цен вида:
44.45
123.674
3245.8643
23569.00
Нужно не просто округлить до целого числа, но еще и до десятой части целого числа.
На выходе нужно получить вот это:
50
130
3250
23570
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 605
Благодарностей
4 596
Баллы
113
Ребят, подскажите плиз формулу по округлению, а то не соображу никак.
Есть список цен вида:
44.45
123.674
3245.8643
23569.00
Нужно не просто округлить до целого числа, но еще и до десятой части целого числа.
На выходе нужно получить вот это:
50
130
3250
23570
разделить на 10, округлить, умножить на 10
 
  • Спасибо
Реакции: Severip

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
Код:
// Округление чисел
var a = project.Variables["price"].Value;
decimal b = Math.Floor(decimal.Parse(a, System.Globalization.CultureInfo.InvariantCulture));
decimal result = Math.Floor(b/10+1);    // Округление в меньшую сторону: +1 или +0.5
//decimal result = Math.Round(b/10+1);     // Округление в большую сторону: +1 или +0.5
result=result*10; // Умножаем на 10 или 5 соответственно
return result;
Сам спросил, сам ответил. Спасибо! :-)
 

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
doc, спасибо.
Просто округлить оказалось недостаточно.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 605
Благодарностей
4 596
Баллы
113

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28

doc

Client
Регистрация
30.03.2012
Сообщения
8 605
Благодарностей
4 596
Баллы
113
  • Спасибо
Реакции: Severip

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
разделить на 10, округлить через Math.Ceiling, умножить на 10
Да, так тоже работает. Результат точно такой же на выходе.
Разницы вроде нет или есть? Где-то может быть ошибка?
 

dmitriy1384

Client
Регистрация
04.11.2013
Сообщения
377
Благодарностей
133
Баллы
43
Подскажите пожалуйста.
Есть число: 0,8754238 нужно получить из него такое: 87,54
Как это реализовать можно ?
 
Последнее редактирование:

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 445
Благодарностей
8 675
Баллы
113
Подскажите пожалуйста.
Есть число: 0,8754238 нужно получить из него такое: 87,54
Как это реализовать можно ?
Не C#, но все же - можно с помощью JS еще. Приложил шаблон.
1 кубик заменяет запятую на точку для JS.
1 строка в JS - умножает на 100 и убирает лишние цифры в конце (ограничивает знаки после точки до 4-ёх).
2 строка JS - ограничивает знаки после точки до 2-ух.

89127
 

Вложения

  • Спасибо
Реакции: dmitriy1384

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 648
Благодарностей
1 315
Баллы
113
Подскажите пожалуйста.
Есть число: 0,8754238 нужно получить из него такое: 87,54
Как это реализовать можно ?






C#:
return (float)Math.Ceiling(float.Parse(project.Variables["number"].Value.Replace(".",","))*(float)Math.Pow(100, 2)-1)/(float)Math.Pow(10, 2);

если не в одну строку тогда так:

C#:
float number = float.Parse(project.Variables["number"].Value.Replace(".",","));
float res = (float)Math.Ceiling(number*(float)Math.Pow(100, 2)-1);
float result = res/(float)Math.Pow(10, 2);
return result;
 
Последнее редактирование:

Кто просматривает тему: (Всего: 3, Пользователи: 0, Гости: 3)