我有一个非常愚蠢的问题..我有一个包含“ 800.0000
”(不带引号)的字符串,我正在尝试将其转换为数字 800。我正在使用此命令,但它不起作用:
int inputNumber = Int32.Parse(inputString);
我收到 FormatException 消息“输入字符串的格式不正确”。
我有一个非常愚蠢的问题..我有一个包含“ 800.0000
”(不带引号)的字符串,我正在尝试将其转换为数字 800。我正在使用此命令,但它不起作用:
int inputNumber = Int32.Parse(inputString);
我收到 FormatException 消息“输入字符串的格式不正确”。
尝试这个:
int inputNumber = Int32.Parse(inputString, NumberStyles.AllowDecimalPoint);
800.000
是类型Double
,而不是Integer
所以,
double inputNumber = Double.Parse(inputString);
会为你工作。
由于您传递的数字是小数,因此您需要使用适当的目标类型 -float
或double
所以这给了你
var value = Double.Parse(s);
你可以像这样去掉小数:
var integer = (int)value;
但即使使用 ,Double.Parse
您也需要小心,因为它会根据当前的文化 ( System.Globalization.CultureInfo.CurrentCulture
) 期待不同的输入。
所以虽然
Double.Parse("800.00", System.Globalization.CultureInfo.GetCultureInfo("en-US"))
按预期工作
Double.Parse("800.00", System.Globalization.CultureInfo.GetCultureInfo("de-DE"))
将产生值“80000”
EDIT1 - 添加:
所以你可能想要使用
Double.Parse("800.00", System.Globalization.CultureInfo.InvariantCulture)
以防止任何可能导致各种麻烦的误解。
发生异常是因为您string
的不是int32
。您必须先转换为double
。
double value = Convert.ToDouble(youString);
尝试这个:
double myDouble = Convert.ToDouble(string);
与其他类型也类似,
int myInt = Convert.ToInteger(string);
Int32 valueInInt = (int)double.Parse(inputString);