C#区域设置混乱

Dov*_*das 1 c# regions

这一切都与双重,浮动数字和分离器有关.所以我的问题是:我总是通过点分隔符获得双倍值.如果我将它转换为字符串,我会得到逗号.如果我将它改回双倍,它会再次得到点.在这里添加一些代码:

    data = Convert.ToDouble(read.ReadSingle()); // converts to -70.00
    Conv = Convert.ToString(data); // converts to -70,00 string
    laikinas[k, m] = double.Parse(Conv);  // and in array I'll get 70.00. 
Run Code Online (Sandbox Code Playgroud)

我确信区域设置一切都很好.我可以看到CurrentCulture.

顺便说一句,我改变了区域设置,而我是半个项目.

Hei*_*nzi 10

A double既没有点也没有逗号 ; 它存储在一些内部表示中.当你看着它,例如,通过Visual Studio调试器,你会看到一些它的字符串表示(其中Visual Studio中选择使用一个).此字符串表示形式无关紧要,仅出于调试目的而显示.

如果您将您的双成一个字符串,可以选择数字格式使用:

  • Convert.ToString(Double)等效于Double.ToString(),它使用基于您当前文化的小数分隔符 - 因此,您在使用时获得逗号(在您的系统上)Convert.ToString.

  • 如果使用其他方法进行转换(例如,Double.ToString(IFormatProvider)),则可以指定要用作参数的区域性设置.例如,myDouble.ToString(CultureInfo.InvariantCulture)始终使用点作为小数点分隔符,与用户的区域性设置无关.