C# double.TryParse() - 方法在不同计算机上的行为不同

问题描述 投票:0回答:1

我有一个项目,我已通过 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()。结果相同。

c# winforms visual-studio-2022
1个回答
0
投票

解析的唯一方式似乎是如果两台计算机上有不同的区域设置。例如,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");

        
© www.soinside.com 2019 - 2024. All rights reserved.