为什么我的解析Double值不对?

gur*_*gui 1 c#

我试图将字符串解析为Double.这是我的代码:

string a = "10.23";
double b = Double.Parse(a);
Run Code Online (Sandbox Code Playgroud)

但是b是1023.0,我不知道为什么.我想得到10.23作为双倍

Zbi*_*iew 9

这是因为您的文化设置,您可以为Parse方法指定文化以获得所需的输出:

string a = "10.23";
double b = double.Parse(a, System.Globalization.CultureInfo.InvariantCulture);
// b == 10.23
Run Code Online (Sandbox Code Playgroud)


Dan*_*ker 9

在德国,逗号(,)用作小数点,而大多数英国文化和您的示例使用句号(.)作为小数点.由于Double.Parse使用线程默认文化来解析数字,并且线程默认文化设置为德语,因此得到错误的结果.

您应该明确指定文化:

using System.Globalization;

string a = "10.23";
double b = Double.Parse(a, CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

不变文化使用句号作为小数点,所以我建议你使用来代替.或者,如果您从已知使用特定文化习俗编写的来源获取字符串,请改用该文化.