C# 区域设置混淆

标签 c# regions

都是关于 double 、 float 和分隔符的。所以我的问题是:我总是用点分隔符获得双重值(value)。如果我将它转换为字符串,我会得到逗号。如果我将它改回 double,它会再次得到点。在这里添加一些代码:

    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. 

我确信区域设置一切都很好。我可以看到 CurrentCulture,因为它必须是。

顺便说一句,我在项目完成一半时更改了区域设置。

最佳答案

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

如果将 double 转换为字符串,可以选择使用哪种数字格式:

  • Convert.ToString(Double)相当于Double.ToString() ,它使用基于您当前文化的小数点分隔符——因此,您在使用 Convert.ToString 时会得到逗号(在您的系统上)。

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

关于C# 区域设置混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8799603/

相关文章:

c# - 重用现有的应用配置

memory - 非连续内存区域的 gnu 链接器部分

css - 有没有办法从 CSS 中的任何图像创建复杂的多边形形状以用于 regions 属性?

states - 世界国家,州及其县/地区/地区列表

shell - 当托管在 MFC CView 中时,Prism shell 区域不会填充

c# - NAudio-初学者问题-在20ms音频文件缓冲区上运行

c# - 如何分配在两个不同的命名空间中声明的同一类对象

c# - 分布式系统sqlite错误

c# - 我不明白我遇到的 NewNotImplementedException 运行时错误

backbone.js - 正确关闭 Marionette 中的 View