代码之家  ›  专栏  ›  技术社区  ›  m4xyz

C#双。TryParse()-方法在不同的计算机上表现不同

  •  -1
  • m4xyz  · 技术社区  · 1 年前

    我有一个项目,我已经通过GitHub在两台计算机上同步。所以代码是完全相同的,但却是双重的。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”的东西,而不是价格。代替同样的结果。

    1 回复  |  直到 1 年前
        1
  •  0
  •   Felipe Torres    1 年前

    如果你在两台计算机上有不同的区域设置,那么解析的唯一方式似乎就是这样。例如,PT-BR使用“,”作为小数,而EN-US使用“.”。解决这个问题的主要方法是确保两台计算机在窗口中都有相同的区域设置设置,或者在程序开始时手动设置区域设置

    对于净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");