我在c#中有一个简单的代码,用于将字符串转换为int
int i = Convert.ToInt32(aTestRecord.aMecProp);
aTestRecord.aMecProp
属于string
。我正在运行的测试,其中1.15
的值为string
。
但是上面的行抛出错误,说输入字符串不是格式!
我不明白为什么?
我正在使用VS 2008 c#
答案 0 :(得分:1)
整数只能表示没有小数部分的字符串。 1.15包含0.15的小数部分。 您必须将其转换为浮点数以保留小数部分并正确解析它:
float f = Convert.ToSingle(aTestRecord.aMecProp);
答案 1 :(得分:1)
这是因为1.xx
不是整数有效值。您可以在转换为Int32
之前截断,例如:
int result = (int)(Math.Truncate(double.Parse(aTestRecord.aMecProp)* value) / 100);
答案 2 :(得分:0)
如果您尝试验证字符串是整数,请使用TryParse()
int i;
if (int.TryParse(aTestRecord.aMecProp, out i))
{
}
如果TryParse()成功, i
将被分配
答案 3 :(得分:0)
试试这个:
double i = Convert.ToDouble(aTestRecord.aMecProp);
或者如果你想要整数部分:
int i = (int) Convert.Double(aTestRecord.aMecProp);
答案 4 :(得分:0)
您可以转换为double然后对其进行类型转换
string str = "1.15";
int val = (int)Convert.ToDouble(str);
答案 5 :(得分:0)
试试这个,
Int32 result =0;
Int32.TryParse(aTestRecord.aMecProp, out result);
答案 6 :(得分: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
答案 7 :(得分:0)
好吧我认为这是
float d = Convert.ToSingle(aTestRecord.aMecProp);