string str = project.Variables["Summa_para_2"].Value.Replace(".",",").Trim();
string ToDelimiter = str.Split(',')[0];
string AfterTheSeparator = str.Split(',')[1];
string Pruning = string.Empty;
switch (project.Variables["kratnij_loty"].Value) {
case "1.00000000":
Pruning = AfterTheSeparator.Substring(0, 0);
break;
case "0.10000000":
Pruning = AfterTheSeparator.Substring(0, 1);
break;
case "0.01000000":
Pruning = AfterTheSeparator.Substring(0, 2);
break;
}
project.Variables["Summa_para_2"].Value = ToDelimiter + "" + Pruning;
Такой мне код дали для замены запятой на точку. Я в C# 0Я не претендую на знание ЯП, но почему у тебя числа с запятой записаны как string?
К сожалению не работает. 0.10000000 обрезая 0.123456789 получается 01, 0.01000000 получается 012Через свич
C#:string str = project.Variables["Summa_para_2"].Value.Replace(".",",").Trim(); string ToDelimiter = str.Split(',')[0]; string AfterTheSeparator = str.Split(',')[1]; string Pruning = string.Empty; switch (project.Variables["kratnij_loty"].Value) { case "1.00000000": Pruning = AfterTheSeparator.Substring(0, 0); break; case "0.10000000": Pruning = AfterTheSeparator.Substring(0, 1); break; case "0.01000000": Pruning = AfterTheSeparator.Substring(0, 2); break; } project.Variables["Summa_para_2"].Value = ToDelimiter + "" + Pruning;
Я набросал пример свича, в твоем случае, тебе нужно смотреть в каком формате приходят значения.К сожалению не работает. 0.10000000 обрезая 0.123456789 получается 01, 0.01000000 получается 012
Да, уже допер, что эти грабли для округления.Переменная ["kratnij_loty"] получает значение (0.10000000 либо 0.01000000 либо 0.00100000 и тд. до 0.00000001), взависимости от полученого значения в переменной ["Summa_para_2"] число обрезается до определённого знака:
0.10000000 - 0.12345678 обрезаем до первого знака после точки - 0.1
0.01000000 - 0.12345678 обрезаем до второго знака после точки - 0.12
0.00100000 - 0.12345678 обрезаем до третьего знака после точки - 0.123
и так далее.
Шаблон высланный мной хорошо работает, только он большой, хотелось при помощи свич запихать его в один кубик.
double d = double.Parse("0.003456789", System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture);
string round = string.Empty;
if (d > 1.00000000) round = System.Math.Round(d, 0).ToString(System.Globalization.CultureInfo.InvariantCulture);
else if (d > 0.10000000 && d < 1.00000000) round = System.Math.Round(d, 1).ToString(System.Globalization.CultureInfo.InvariantCulture);
else if (d > 0.01000000 && d < 0.10000000) round = System.Math.Round(d, 2).ToString(System.Globalization.CultureInfo.InvariantCulture);
else if (d > 0.00100000 && d < 0.01000000) round = System.Math.Round(d, 3).ToString(System.Globalization.CultureInfo.InvariantCulture);
return round;