Double.Parse无法保留逗号

Aga*_*nMe 4 c#

我正在尝试将字符串转换为double,我有这个值:53.095并尝试将其转换为double:

string doub = "53.095";
var cv = Convert.ToDouble(doub);
Run Code Online (Sandbox Code Playgroud)

我明白了:53095.为什么我没有得到逗号?我错过了什么?

smo*_*nes 9

我想这是因为不同的国家处理逗号的方式不同.例如,我的国家使用,.所以你必须知道如何格式化字符串.

string doub = "53.095";
var cv = double.Parse(doub, new CultureInfo("en-GB"));
Run Code Online (Sandbox Code Playgroud)

对于另一个本地化,这将有效.

string doub = "53,095"; // note ,
var cv = double.Parse(doub, new CultureInfo("sv-SE"));
Run Code Online (Sandbox Code Playgroud)

编辑:

正如king_nak所提到的,CultureInfo.InvariantCulture只要你使用英文风格进行格式化,你就可以使用.

[...]它与英语有关,但与任何国家/地区无关.

string doub = "53.095";
string doub2 = "53,095"; 
var cv1 = double.Parse(doub, CultureInfo.InvariantCulture); // Works
var cv2 = double.Parse(doub2, CultureInfo.InvariantCulture); // Does not work.
Run Code Online (Sandbox Code Playgroud)

  • 我建议使用`CultureInfo.InvariantCulture`而不是GB-en的新信息 (2认同)