Как добавить символы C# или решить арифметическую задачу

Voldemar

Client
Регистрация
13.04.2014
Сообщения
478
Благодарностей
56
Баллы
28
Добрый день!
Подскажите, есть 4 числа условно 1,134 1,4 1 1,11

Как их привести все к единому формату нужных дробей.

Условно у меня всегда должно быть такое число х,ххх ,т.е. если число 1, надо сделать 1,000. Таким образом мне надо обработать 4 числа.


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

C#:
string snum1 = project.Variables["num1"].Value;
string snum2 = project.Variables["num2"].Value;

string up_down;
double num1, num2, sum, res;

double.TryParse(snum1.Replace(",", ""), out num1);
double.TryParse(snum2.Replace(",", ""), out num2);

sum = num1-num2;
if(sum < 0)
{
    up_down = "down";
    sum = sum*-1;
}
else up_down = "up";

res = (sum*100)/num1;

project.SendInfoToLog($"разница: {sum}; {up_down}; процент: {res}", true);

project.Variables["var1"].Value = sum.ToString();
project.Variables["var2"].Value = res.ToString();
project.Variables["var3"].Value = up_down;
Всё считает.

Если к примеру число num1 будет 7 или 7,2 а num2 будет 7,555 то будет не правильно высчитывать постоянно, вернее правильно, но не в нужных дробях.
Результат мне всегда нужен в формате х,ххх
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 691
Баллы
113

djaga

Client
Регистрация
26.04.2020
Сообщения
505
Благодарностей
1 052
Баллы
93
Добрый день!
Подскажите, есть 4 числа условно 1,134 1,4 1 1,11

Как их привести все к единому формату нужных дробей.

Условно у меня всегда должно быть такое число х,ххх ,т.е. если число 1, надо сделать 1,000. Таким образом мне надо обработать 4 числа.


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

C#:
string snum1 = project.Variables["num1"].Value;
string snum2 = project.Variables["num2"].Value;

string up_down;
double num1, num2, sum, res;

double.TryParse(snum1.Replace(",", ""), out num1);
double.TryParse(snum2.Replace(",", ""), out num2);

sum = num1-num2;
if(sum < 0)
{
    up_down = "down";
    sum = sum*-1;
}
else up_down = "up";

res = (sum*100)/num1;

project.SendInfoToLog($"разница: {sum}; {up_down}; процент: {res}", true);

project.Variables["var1"].Value = sum.ToString();
project.Variables["var2"].Value = res.ToString();
project.Variables["var3"].Value = up_down;
Всё считает.

Если к примеру число num1 будет 7 или 7,2 а num2 будет 7,555 то будет не правильно высчитывать постоянно, вернее правильно, но не в нужных дробях.
Результат мне всегда нужен в формате х,ххх
Вот решение.
Math.Round Метод

upd:

Приведение всех чисел к виду (0.000):
return decimal.Parse(project.Variables["num"].Value).ToString("0.000"); 
// Результаты: 1 → 1,000 | 1,11 → 1,110 | 1,4 → 1,400
 
Последнее редактирование:

Voldemar

Client
Регистрация
13.04.2014
Сообщения
478
Благодарностей
56
Баллы
28
Я пробежался кратцем, только не понял, а что будет если чисто без запятой изначально.
 

Voldemar

Client
Регистрация
13.04.2014
Сообщения
478
Благодарностей
56
Баллы
28
Вот решение.
Math.Round Метод

upd:

Приведение всех чисел к виду (0.000):
return decimal.Parse(project.Variables["num"].Value).ToString("0.000");
// Результаты: 1 → 1,000 | 1,11 → 1,110 | 1,4 → 1,400
Вот решение.
Math.Round Метод

upd:

Приведение всех чисел к виду (0.000):
return decimal.Parse(project.Variables["num"].Value).ToString("0.000");
// Результаты: 1 → 1,000 | 1,11 → 1,110 | 1,4 → 1,400

C#:
return decimal.Parse(project.Variables["open"].Value).ToString("0.000");
return decimal.Parse(project.Variables["high"].Value).ToString("0.000");
return decimal.Parse(project.Variables["low"].Value).ToString("0.000");
return decimal.Parse(project.Variables["close"].Value).ToString("0.000");
Попробовал вот так, в переменную он обратно правда не кладёт. Просто в логе выдает результат, только первой строчки. Не могли бы исправить меня. Чтобы записывал в переменную и для всех 4 строк.
 

djaga

Client
Регистрация
26.04.2020
Сообщения
505
Благодарностей
1 052
Баллы
93
C#:
return decimal.Parse(project.Variables["open"].Value).ToString("0.000");
return decimal.Parse(project.Variables["high"].Value).ToString("0.000");
return decimal.Parse(project.Variables["low"].Value).ToString("0.000");
return decimal.Parse(project.Variables["close"].Value).ToString("0.000");
Попробовал вот так, в переменную он обратно правда не кладёт. Просто в логе выдает результат, только первой строчки. Не могли бы исправить меня. Чтобы записывал в переменную и для всех 4 строк.
C#:
project.Variables["open"].Value = decimal.Parse(project.Variables["open"].Value).ToString("0.000");
project.Variables["high"].Value = decimal.Parse(project.Variables["high"].Value).ToString("0.000");
project.Variables["low"].Value = decimal.Parse(project.Variables["low"].Value).ToString("0.000");
project.Variables["close"].Value = decimal.Parse(project.Variables["close"].Value).ToString("0.000");
 
  • Спасибо
Реакции: SlipDez и Voldemar

Voldemar

Client
Регистрация
13.04.2014
Сообщения
478
Благодарностей
56
Баллы
28
Спасибо огромное!
 
  • Спасибо
Реакции: djaga

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