我有一个项目,我已通过 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
}
我百分百确定,代码是相同的。两个系统上的 Visual Studio 2022 都是最新的。
我尝试只写“12.24”之类的内容而不是price.Replace()。结果相同。
解析的唯一方式似乎是如果两台计算机上有不同的区域设置。例如,PT-BR 使用“,”作为十进制,而 EN-US 使用“.”。解决问题的正确方法是确保两台计算机上都有相同的区域设置,或者在程序开始时设置相同的区域设置
适用于 .Net 7+
System.Globalization.CultureInfo.DefaultThreadCurrentCulture = new System.Globalization.CultureInfo("pt-BR");//Here you use the culture string you wish
System.Globalization.CultureInfo.DefaultThreadCurrentUICulture = new System.Globalization.CultureInfo("pt-BR");