1

它都是关于双精度、浮点数和分隔符的。所以我的问题是:我总是用点分隔符得到双倍的价值。如果我将它转换为字符串,我会得到逗号。如果我把它改回双倍,它会再次得到点。在此处添加一些代码:

    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 必须如此。

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

4

1 回答 1

10

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

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

  • Convert.ToString(Double)等效于Double.ToString(),它根据您当前的文化使用小数分隔符 - 因此,使用Convert.ToString.

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

于 2012-01-10T06:56:18.840 回答