我在DB中有一个浮点数字段。我的应用程序是WindowsForm。我需要将格式为43.27的文本框中的值转换为double。 当我这样做COnvert.ToDouble(txtbox.Text)我得到异常,说输入字符串是错误的格式。 如何纠正这个问题
答案 0 :(得分:9)
尝试解析时指定文化:
// CultureInfo.InvariantCulture would use "." as decimal separator
// which might not be the case of the current culture
// you are using in your application. So this will parse
// values using "." as separator.
double d = double.Parse(txtbox.Text, CultureInfo.InvariantCulture);
要优雅地处理错误情况而不是抛出异常,可以使用TryParse方法:
double d;
if (double.TryParse(txtbox.Text, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out d))
{
// TODO: use the parsed value
}
else
{
// TODO: tell the user to enter a correct number
}
答案 1 :(得分:1)
如果要将字符串转换为数字,则需要确定字符串使用的格式。例如。在英语中,有一个小数点(“43.27”),而在捷克语,有一个小数点(“43,47”)。
默认情况下,使用当前的语言环境;如果您知道该号码使用英语转换,您需要明确指定文化,例如
Convert.ToDouble(txtBox.Text, CultureInfo.InvariantCulture);