Снипет по разному работает на разных компах.

  • Автор темы Автор темы jonvy
  • Дата начала Дата начала

jonvy

Client
Регистрация
28.11.2015
Сообщения
305
Реакции
17
Баллы
18
Например:

decimal a = decimal.Parse(project.Variables["a"].Value);
return a*100;

В переменной а находится число с запятой например 0,2273577

Если выполнять этот код на моём компе то в числе должна быть запятая. Т.е. если там будет точка 0.2273577 то снипет не сработает будет ошибка.

Если на сервере, то в переменной а должна быть точка 0.2273577
Если в числе будет запятая, то при умножении на 100 в конец числа будет дописано 00.
Получится 0,2273577*100=227357700

Как сделать чтобы на всех компах оно работало одинаково?
 
Привести региональные настройки на компах в единый вид, либо учесть в сниппете этот момент и заменять зпт и тчк на текущий разделитель полученный из Culture. Пример решения второго варианта ниже:
C#:
Развернуть Свернуть Копировать
string data = "0,05"; //project.Variable['Double_data'].Value;
Char separator = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator[0];
data = data.Replace( ',' , separator);
data = data.Replace( '.' , separator);
return data;
 
  • Оценить
Реакции: doc и evgen_po
Привести региональные настройки на компах в единый вид, либо учесть в сниппете этот момент и заменять зпт и тчк на текущий разделитель полученный из Culture. Пример решения второго варианта ниже:
C#:
Развернуть Свернуть Копировать
string data = "0,05"; //project.Variable['Double_data'].Value;
Char separator = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator[0];
data = data.Replace( ',' , separator);
data = data.Replace( '.' , separator);
return data;
Я вот так решил

System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
//Теперь у меня на обоих компах работают точки. Этого достаточно или мне ждать какие то сюрпризы при использовании такого решения ?
decimal a = decimal.Parse(project.Variables["High"].Value);
decimal b = decimal.Parse(project.Variables["Low"].Value);
//разница в процентах между мин. и макс. ценой
return ((a*100)/b)-100;
 

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