Округлить число в C#

inkognitosss

Client
Регистрация
23.03.2015
Сообщения
102
Благодарностей
9
Баллы
18
Здравствуйте, приведите пример округления числа в C# коде. К примеру что бы 74,43 стало 74. Буду очень благодарен.
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 453
Благодарностей
5 913
Баллы
113

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
поищите по поиску на форуме много об этом
 

inkognitosss

Client
Регистрация
23.03.2015
Сообщения
102
Благодарностей
9
Баллы
18
Код:
var a = Convert.ToDouble(project.Variables["num"].Value)/100*40.6;
return System.Math.Round((project.Variables["num"].Value), 0);
return a.ToString();
Объясните почему не работает код, пожалуйста?
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 453
Благодарностей
5 913
Баллы
113

inkognitosss

Client
Регистрация
23.03.2015
Сообщения
102
Благодарностей
9
Баллы
18

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 453
Благодарностей
5 913
Баллы
113
  1. var a = Convert.ToDouble(project.Variables["num"].Value)/100*40.6;
Это вы что прописали? не понимаю. И конвертация и деление с умножением, все в одном)
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
var num = 74.43;
var twoDecimalPlaces = Math.Round(num, 0);
return twoDecimalPlaces;
 

inkognitosss

Client
Регистрация
23.03.2015
Сообщения
102
Благодарностей
9
Баллы
18
  1. var a = Convert.ToDouble(project.Variables["num"].Value)/100*40.6;
Это вы что прописали? не понимаю. И конвертация и деление с умножением, все в одном)
Я узнаю процент от числа. Этот код я нашел на форуме здесь.
 

inkognitosss

Client
Регистрация
23.03.2015
Сообщения
102
Благодарностей
9
Баллы
18
Извините, я наверно изначально не правильно задал вопрос. Мне нужно с переменной {-Variable.num-} которая хранить значение 74, узнать 15% и полученный результат округлить до ближайшего целого. Извините за тупость:bm:
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 453
Благодарностей
5 913
Баллы
113
Извините, я наверно изначально не правильно задал вопрос. Мне нужно с переменной {-Variable.num-} которая хранить значение 74, узнать 15% и полученный результат округлить до ближайшего целого. Извините за тупость:bm:
Код:
double number = double.Parse(project.Variables["num"].Value); //num - это ваша переменная
double percent = double.Parse(project.Variables["percent"].Value); //percent - это ваш процент
double result = number/100*percent; //вычисление процента
return System.Math.Round(result,0); // округление
 
Последнее редактирование:

inkognitosss

Client
Регистрация
23.03.2015
Сообщения
102
Благодарностей
9
Баллы
18
Код:
double number = double.Parse(project.Variables["num"].Value); //num - это ваша переменная
double percent = double.Parse(project.Variables["percent"].Value); //percent - это ваш процент
double result = number/100*percent; //вычисление процента
return System.Math.Round(result,0); // округление
Спасибо вам большое, очень помогли.
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 453
Благодарностей
5 913
Баллы
113
Незачто:-)
 
  • Спасибо
Реакции: JanCarlo

mladenec45

Client
Регистрация
27.01.2016
Сообщения
3
Благодарностей
0
Баллы
1
return System.Math.Round(74.43, 0); А как присвоить числу 74,43 переменную?
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
  • Спасибо
Реакции: Moonwalker и mladenec45

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 631
Благодарностей
1 226
Баллы
113
Пардон за своеобразный некропостинг ))
Воспользовался строкой

return System.Math.Round(double.Parse(твоя переменая), 0);

Но в случае, если значение, например, 122,5, то округляет до 122. Насколько понял по спецификации, в случае "середины" округляет не в большую/меньшую сторону, а в сторону ближайшего четного числа.
Как сделать так, чтобы он округял в таком случае традиционно в большую сторону, т.е., из 122,5 делал 123.
 

Meteorburn

Client
Регистрация
23.05.2016
Сообщения
1 472
Благодарностей
575
Баллы
113
Пардон за своеобразный некропостинг ))
Воспользовался строкой

return System.Math.Round(double.Parse(твоя переменая), 0);

Но в случае, если значение, например, 122,5, то округляет до 122. Насколько понял по спецификации, в случае "середины" округляет не в большую/меньшую сторону, а в сторону ближайшего четного числа.
Как сделать так, чтобы он округял в таком случае традиционно в большую сторону, т.е., из 122,5 делал 123.
C#:
return System.Math.Ceiling(double.Parse(твоя переменая), 0); // - в большую
return System.Math.Floor(double.Parse(твоя переменая), 0); // - меньшую
 
  • Спасибо
Реакции: Moonwalker

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 631
Благодарностей
1 226
Баллы
113
C#:
return System.Math.Ceiling(double.Parse(твоя переменая), 0); // - в большую
return System.Math.Floor(double.Parse(твоя переменая), 0); // - меньшую
Не хочет. Отдает ошибку:
Компиляция кода Ошибка в действии "CS1501" "Ни одна из перегрузок метода "Ceiling" не принимает "2" аргументов". [Строка: 0; Cтолбец: 8]
 

Meteorburn

Client
Регистрация
23.05.2016
Сообщения
1 472
Благодарностей
575
Баллы
113
  1. return System.Math.Ceiling(double.Parse(твоя переменая));
  2. return System.Math.Floor(double.Parse(твоя переменая));
так попробуйте
 
  • Спасибо
Реакции: Moonwalker

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 631
Благодарностей
1 226
Баллы
113

Meteorburn

Client
Регистрация
23.05.2016
Сообщения
1 472
Благодарностей
575
Баллы
113
  • Спасибо
Реакции: Moonwalker

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 631
Благодарностей
1 226
Баллы
113
Не, заработало. Глюк был в другом просто, почему-то если где-то на странице шаблона есть кубик с ошибочным кодом, даже вне структуры, запуск любого кубика выдает ошибку. Забыл просто кривой убрать. Спасибо большое за помощь ))

update:
Хотя, получается, что из 15,4 он делает 16.
А привычно, чтобы из 15,4 делал 15, из 15,6 - 16, и, соответственно, из 15,5 - тоже 16.
Просто Round все делал правильно, но не в случае с 15,5. Его он округлял до четного числа =/
 

Meteorburn

Client
Регистрация
23.05.2016
Сообщения
1 472
Благодарностей
575
Баллы
113
Не, заработало. Глюк был в другом просто, почему-то если где-то на странице шаблона есть кубик с ошибочным кодом, даже вне структуры, запуск любого кубика выдает ошибку. Забыл просто кривой убрать. Спасибо большое за помощь ))
:ay:
 

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 631
Благодарностей
1 226
Баллы
113
Судя по всему, надо как-то организовать, чтобы System.Math.Round работал через AwayFromZero, а не через ToEven.
Осталось разобраться, как это реализовать )))
 

Meteorburn

Client
Регистрация
23.05.2016
Сообщения
1 472
Благодарностей
575
Баллы
113
Не, заработало. Глюк был в другом просто, почему-то если где-то на странице шаблона есть кубик с ошибочным кодом, даже вне структуры, запуск любого кубика выдает ошибку. Забыл просто кривой убрать. Спасибо большое за помощь ))

update:
Хотя, получается, что из 15,4 он делает 16.
А привычно, чтобы из 15,4 делал 15, из 15,6 - 16, и, соответственно, из 15,5 - тоже 16.
Просто Round все делал правильно, но не в случае с 15,5. Его он округлял до четного числа =/
C#:
double myDouble = 2.5;
double result = Math.Round(myDouble, MidpointRounding.AwayFromZero);
return result;
// --- результат 3 --- //
 
  • Спасибо
Реакции: Stat и Moonwalker

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 631
Благодарностей
1 226
Баллы
113
Регистрация
09.11.2015
Сообщения
264
Благодарностей
10
Баллы
18
Всех приветствую. Не подскажете где можно такой же кодик найти для округления до сотых?
1.22=1.2
1.13=1.1
1.67=1.7
Буду при многом благодарен Вам товарищи.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Всех приветствую. Не подскажете где можно такой же кодик найти для округления до сотых?
1.22=1.2
1.13=1.1
1.67=1.7
Буду при многом благодарен Вам товарищи.
воспользуйся поиском если с этой темы нет подходящего, на форуме много об этом есть
 
Регистрация
09.11.2015
Сообщения
264
Благодарностей
10
Баллы
18

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Всех приветствую. Не подскажете где можно такой же кодик найти для округления до сотых?
1.22=1.2
1.13=1.1
1.67=1.7
Буду при многом благодарен Вам товарищи.
так надо ?
C#:
double x = 1.67;
x = Math.Round(x, 1);

return x;
ответ 1,7
 

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