我有一个非常愚蠢的问题..我有一个包含“800.0000
”(没有引号)的字符串,我正在尝试将其转换为数字800.我正在使用此命令,但是不工作:
int inputNumber = Int32.Parse(inputString);
我收到FormatException,并显示消息“输入字符串格式不正确。”
答案 0 :(得分:11)
试试这个:
int inputNumber = Int32.Parse(inputString, NumberStyles.AllowDecimalPoint);
答案 1 :(得分:3)
800.000
的类型为Double
,而不是Integer
所以,
double inputNumber = Double.Parse(inputString);
会为你效劳。
答案 2 :(得分:1)
发生异常是因为您的string
不是int32
。您必须先转换为double
。
double value = Convert.ToDouble(youString);
答案 3 :(得分:1)
试试这个:
double myDouble = Convert.ToDouble(string);
与其他类型的工作方式类似,
int myInt = Convert.ToInteger(string);
答案 4 :(得分:1)
由于您传递的是带小数的数字,因此您需要使用相应的目标类型 - 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)
防止任何可能导致各种麻烦的误解。
答案 5 :(得分:0)
Int32 valueInInt =(int)double.Parse(inputString);