使用Convert.ToInt32在c#中从字符串转换为int

使用Convert.ToInt32在c#中从字符串转换为int,c#,C#,我有一个c语言的简单代码,可以将字符串转换为int int i = Convert.ToInt32(aTestRecord.aMecProp); aTestRecord.aMecProp属于string。我正在运行的测试,在此期间,string中的值为1.15 但上面的行抛出错误,表示输入字符串的格式不正确 我不明白为什么 我使用的是VS2008c 35;如果您试图验证字符串是否为整数,请使用TryParse() 如果TryParse()成功,i将被分配 double i = Convert.

我有一个c语言的简单代码,可以将字符串转换为int

int i = Convert.ToInt32(aTestRecord.aMecProp);
aTestRecord.aMecProp
属于
string
。我正在运行的测试,在此期间,
string
中的值为
1.15

但上面的行抛出错误,表示输入字符串的格式不正确

我不明白为什么


我使用的是VS2008c 35;

如果您试图验证字符串是否为整数,请使用TryParse()

如果TryParse()成功,
i
将被分配

double i = Convert.ToDouble(aTestRecord.aMecProp);
或者,如果需要整数部分:

int i = (int) Convert.Double(aTestRecord.aMecProp);

整数只能表示没有小数部分的字符串。 1.15包含0.15的小数部分。 您必须将其转换为浮点,以保留小数部分并正确解析它:

float f = Convert.ToSingle(aTestRecord.aMecProp);

这是因为
1.xx
不是有效的整数值。对于示例,您可以在转换为
Int32
之前截断:

int result = (int)(Math.Truncate(double.Parse(aTestRecord.aMecProp)* value) / 100);

您可以将其转换为double,然后进行类型转换

string str = "1.15";
int val = (int)Convert.ToDouble(str);
试试这个

Int32 result =0;
Int32.TryParse(aTestRecord.aMecProp, out result);
JavaScript parseInt函数是否需要C#等价物?我偶尔会用到这个:

public int? ParseInt(string value)
{
    // Match any digits at the beginning of the string with an optional
    // character for the sign value.
    var match = Regex.Match(value, @"^-?\d+");

    if(match.Success)
        return Convert.ToInt32(match.Value);
    else
        return null; // Because C# does not have NaN
}

...

var int1 = ParseInt("1.15"); // returns 1
var int2 = ParseInt("123abc456"); // returns 123
var int3 = ParseInt("abc"); // returns null
var int4 = ParseInt("123"); // returns 123
var int5 = ParseInt("-1.15"); // returns -1
var int6 = ParseInt("abc123"); // returns null
好的,我想这是

float d = Convert.ToSingle(aTestRecord.aMecProp);

可能先转换成double,然后再转换成int,此时无法测试它。那么什么是整数?这是一个整数。你看过C#的数据类型了吗?字符串值1.15实际上不是一个整数。它是浮点值。这是因为它是一个浮点值,您正试图转换它。是否要舍入?假设:1.5=>2?应该作为注释。
float d = Convert.ToSingle(aTestRecord.aMecProp);