0

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

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

aTestRecord.aMecProp属于string. 我正在运行的测试,在此期间它的值为1.15in string

但上面的行抛出错误,说输入字符串不是格式!

我不明白为什么?

我正在使用 VS 2008 c#

4

8 回答 8

1

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

float f = Convert.ToSingle(aTestRecord.aMecProp);
于 2013-10-25T14:18:22.890 回答
1

那是因为1.xx不是整数有效值。您可以在转换为之前截断Int32,例如:

int result = (int)(Math.Truncate(double.Parse(aTestRecord.aMecProp)* value) / 100);
于 2013-10-25T14:18:54.657 回答
0

尝试这个:

double i = Convert.ToDouble(aTestRecord.aMecProp);

或者如果你想要整数部分:

int i = (int) Convert.Double(aTestRecord.aMecProp);
于 2013-10-25T14:18:09.107 回答
0

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

int i;
if (int.TryParse(aTestRecord.aMecProp, out i))
{

}

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

于 2013-10-25T14:17:15.680 回答
0

您可以转换为双精度然后对其进行类型转换

string str = "1.15";
int val = (int)Convert.ToDouble(str);
于 2013-10-25T14:19:53.323 回答
0

试试这个,

Int32 result =0;
Int32.TryParse(aTestRecord.aMecProp, out result);
于 2013-10-25T14:27:50.950 回答
0

您是否需要 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
于 2013-10-25T14:39:29.273 回答
0

好的,我认为这是

float d = Convert.ToSingle(aTestRecord.aMecProp);
于 2014-02-22T14:49:11.940 回答