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

本文关键字:转换 int 数字 包含 字符串 | 更新日期: 2023-09-27 18:34:44

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

int inputNumber = Int32.Parse(inputString);

我收到 FormatException,并显示消息"输入字符串格式不正确"。

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

试试这个:

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

800.000

属于 Double 型,而不是Integer

所以

double inputNumber = Double.Parse(inputString);

会为你工作。

出现

异常是因为您的string没有int32。您必须先转换为double

double value = Convert.ToDouble(youString);

试试这个:

double myDouble = Convert.ToDouble(string);

与其他类型的工作方式类似,

int myInt = Convert.ToInteger(string);

由于您要传递的小数,因此您需要使用适当的目标类型 - 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">

编辑 1 - 新增:

所以你可能想要使用

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

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

Int32 valueInInt = (int(double.解析(输入字符串(;