2

我有一个非常愚蠢的问题..我有一个包含“ 800.0000”(不带引号)的字符串,我正在尝试将其转换为数字 800。我正在使用此命令,但它不起作用:

int inputNumber = Int32.Parse(inputString);

我收到 FormatException 消息“输入字符串的格式不正确”。

4

6 回答 6

11

尝试这个:

int inputNumber = Int32.Parse(inputString, NumberStyles.AllowDecimalPoint);
于 2012-05-21T13:31:13.367 回答
3

800.000

是类型Double,而不是Integer

所以,

double inputNumber = Double.Parse(inputString);

会为你工作。

于 2012-05-21T13:31:50.187 回答
1

由于您传递的数字是小数,因此您需要使用适当的目标类型 -floatdouble

所以这给了你

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)

以防止任何可能导致各种麻烦的误解。

于 2012-05-21T13:47:18.207 回答
1

发生异常是因为您string的不是int32。您必须先转换为double

double value = Convert.ToDouble(youString);
于 2012-05-21T13:32:28.087 回答
1

尝试这个:

double myDouble = Convert.ToDouble(string);

与其他类型也类似,

int myInt = Convert.ToInteger(string);
于 2012-05-21T13:34:32.523 回答
0

Int32 valueInInt = (int)double.Parse(inputString);

于 2013-07-04T05:33:36.877 回答