我有一个字符串
string w = y + "/" + fromRow[col2.ColumnName];
和w返回值,如0/5
“0/5”,我必须在int32上转换它。我试过了
int.parse ,但其显示错误输入字符串的格式不正确。
string w="0/5"
int m=int32.parse(W)
我也尝试过convert.toint32,但它也显示错误。
string w="0/5"
int m=Convert.ToInt32(W)
答案 0 :(得分:1)
将它们分开解析,然后分开。
int x = Int32.Parse(y);
int y = Int32.Parse(fromRow[col2.ColumnName]);
int m = x/y;
虽然你的意思是使用双打吗?由于你要分开,所以在这里使用int
没有多大意义。
编辑:根据评论,您希望将0/5
字面存储在数据库中。整数不包含这样的值。
我认为您需要更改数据库以存储string
,而这样才能存储0/5
。
如果要将数据库中的0/5
解析为2个单独的整数,请在字符串上使用String.Split
,并将其传递给/
答案 1 :(得分:0)
如果字符串"0/5"
仅用于显示目的,那么您只需要存储构成显示值的两个整数组件。您可以根据需要使用这两个值来创建“显示字符串”。
例如,如果这是测验的用户分数,那么您的两个值是“用户分数”和“最高分数”。每个都将作为int
存储在两个单独的数据库字段中。
然后,只要您需要显示它,您只需重新创建字符串,例如:
string display = string.Format("{0}/{1}", userScore, maximumScore);
//where totalScore and maximumScore have been pulled from your DB
当然,在测验的例子中,你可能无论如何都能从其他数据重新计算“最高分”(例如问题数),因此只需要存储第一个值,{{ 1}}。
在您的示例中,只需将userScore
的值存储在数据库中。
答案 2 :(得分:0)
整数是一个没有小数部分的数字,例如,3,28,-76,154等。你有一个字符串,“0/5”。 “0/5”不代表数字(尤其是你说它不是一个分数),所以它不能转换为整数,因为它不是同一种数据。您需要更改要存储的列的数据类型,或以不同的方式存储数据(例如,将两个整数存储在不同的列中)。
答案 3 :(得分:-2)
Try this:
string line = "1/5";
int idx = line.IndexOf('/');
Console.WriteLine(idx);
int a = Int32.Parse(line.Substring(0, idx));
Console.WriteLine(a);
int b = Int32.Parse(line.Substring(idx+1, line.Length - (idx+1)));
Console.WriteLine(b);
decimal result = a/b;
Console.WriteLine(result);