У меня есть проект, который я синхронизировал на двух компьютерах через GitHub. Таким образом, код точно такой же, но метод double.TryParse() ведет себя по-другому. Например:
string price = "5,50";
double parse_out;
if (double.TryParse(price.Replace(",", "."), out parse_out)
{
//output computer-1
//parse_out -> 5.50
//output computer-2
//parse_out -> 550
}
Я уверен на 100%, код тот же. Visual Studio 2022 обновлена в обеих системах.
Я попытался просто написать что-то вроде «12,24» вместо Price.Replace(). Тот же результат.
используйте обычный try-catch, который можно использовать
Я предполагаю, что эти компьютеры имеют другую культуру. Так как в одной машине в качестве десятичного разделителя используется ",", а в другой - ".".
Каково желаемое поведение?
Ага. Культура здесь трюк





Кажется, единственный способ анализа будет вести себя подобным образом, если у вас разные региональные настройки на двух компьютерах. Например, PT-BR использует десятичное число «,», а EN-US — «.». Правильный способ решения проблемы — убедиться, что на обоих компьютерах установлены одинаковые региональные настройки в Windows, или вручную настроить региональные настройки в начале программы.
для .Net 7+
System.Globalization.CultureInfo.DefaultThreadCurrentCulture = new System.Globalization.CultureInfo("pt-BR");//Here you use the culture string you wish, check https://stackoverflow.com/questions/15968625/culture-info-names for a list of them
System.Globalization.CultureInfo.DefaultThreadCurrentUICulture = new System.Globalization.CultureInfo("pt-BR");
Вы пытались установить CultureInfo, а затем протестировать на обоих компьютерах?