【发布时间】:2013-09-03 13:19:23
【问题描述】:
我有这样的字符串,我想把它转换成双精度。
string x = "65.50";
double y = Convert.ToDouble(x);
但结果是6550.0
我希望它是 65.50。
我正在使用 ASP.NET 和 C#。我认为这是全球化的问题。
这是我的问题抱歉(:
【问题讨论】:
标签: c# asp.net globalization
我有这样的字符串,我想把它转换成双精度。
string x = "65.50";
double y = Convert.ToDouble(x);
但结果是6550.0
我希望它是 65.50。
我正在使用 ASP.NET 和 C#。我认为这是全球化的问题。
这是我的问题抱歉(:
【问题讨论】:
标签: c# asp.net globalization
是的,是您当前的文化将其转化为这种方式。您可以使用CultureInfo.InvariantCulture 跳过使用您的文化。
double d = double.Parse("65.50", CultureInfo.InvariantCulture);
我希望它是 65.50。
如果要将其转换回字符串:
string str = d.ToString("N2", CultureInfo.InvariantCulture);
我认为这是一种货币,因为您保留了小数位。那么你应该改用decimal:
decimal dec = decimal.Parse("65.50", CultureInfo.InvariantCulture); // 65.5
现在您可以使用decimal.ToString,它会自动恢复小数位:
string str = dec.ToString(CultureInfo.InvariantCulture); // "65.50"
【讨论】:
System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
最近我遇到了类似的问题。解决办法:
var result = Double.TryParse(x, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out y);
如果你得到 true,那就是 x 被转换为 double
【讨论】:
试试这个:
var res = Double.Parse("65.50", NumberStyles.Float, CultureInfo.InvariantCulture);
它将用. 是浮动分隔符的文化来解析它
你可以在这里试试:http://ideone.com/3LMVqa
【讨论】: