Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法将字符串(包含数字)转换为int?_C#_String_Type Conversion - Fatal编程技术网

C# 无法将字符串(包含数字)转换为int?

C# 无法将字符串(包含数字)转换为int?,c#,string,type-conversion,C#,String,Type Conversion,我有一个很愚蠢的问题。。我有一个字符串,其中包含“800.0000”(不带引号),我正试图将其转换为数字800。我正在使用此命令,但它不起作用: intinputnumber=Int32.Parse(inputString) 我收到FormatException,消息是“输入字符串的格式不正确。”尝试以下操作: int inputNumber = Int32.Parse(inputString, NumberStyles.AllowDecimalPoint); 800.000 类型为Doubl

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

intinputnumber=Int32.Parse(inputString)

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

尝试以下操作:

int inputNumber = Int32.Parse(inputString, NumberStyles.AllowDecimalPoint);
800.000

类型为
Double
,而不是
Integer

所以


将为您工作。

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

double value = Convert.ToDouble(youString);
试试这个:

double myDouble = Convert.ToDouble(string);
同样适用于其他类型

int myInt = Convert.ToInteger(string);

由于传递的数字是小数,因此需要使用适当的目标类型-
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)
防止任何可能导致各种麻烦的误解。

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

Double.Parse("800.00", System.Globalization.CultureInfo.InvariantCulture)