-4

我有一个字符串

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)
4

4 回答 4

1

分别解析它们,然后划分。

int x = Int32.Parse(y);
int y = Int32.Parse(fromRow[col2.ColumnName]);
int m = x/y;

虽然你的意思是使用双打?在这里使用没有多大意义,int因为您正在划分。

编辑:根据评论,您希望逐字存储0/5在数据库中。整数不包含这样的值。

我认为您需要更改数据库以存储 astring而不是允许您存储0/5.

如果您想0/5从数据库中解析回 2 个单独的整数,String.Split请在字符串上使用,并传递它/

于 2013-08-07T12:41:59.197 回答
0

如果字符串"0/5"仅用于显示目的,那么您只需存储构成显示值的两个整数分量。您可以根据需要使用这两个值来创建“显示字符串”。

例如,如果这是测验的用户分数,那么您的两个值是“用户分数”和“最高分数”。每个都将作为一个存储int在两个单独的数据库字段中。

然后,只要您需要显示它,您只需重新创建字符串,例如:

string display = string.Format("{0}/{1}", userScore, maximumScore);
//where totalScore and maximumScore have been pulled from your DB

当然,在测验的示例中,您可能无论如何都能够从其他数据(例如问题数)重新计算“最高分数”,因此只需要存储第一个值,userScore.

在您的示例情况下,只需将值存储y在数据库中。

于 2013-08-07T12:58:47.950 回答
0

整数是没有小数部分的单个数字,例如 3、28、-76、154 等。您有一个字符串“0/5”。“0/5”不代表一个数字(特别是你说过它不是分数),所以它不能转换为整数,因为它不是同一种数据。您需要更改要存储它的列的数据类型,或以不同的方式存储数据(例如,将两个整数存储在不同的列中)。

于 2013-08-07T12:59:07.280 回答
-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);
于 2013-08-07T12:59:06.163 回答