2013-08-07 2 views
-4

У меня есть строкапреобразования строки в Int в C#

string w = y + "/" + fromRow[col2.ColumnName]; 

и ш значение возвращается как 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) 
+3

Хотите ли вы преобразовать его в 05 (октал 5), 0, 5, что? –

+2

Что вы хотите, чтобы он вернулся? –

+2

Какое значение должно иметь значение 'int', если вы попытаетесь разобрать' 0/5'? – Shaamaan

ответ

0

Целое число представляет собой одно число, без десятичной части, например, 3, 28, -76, 154 и т.д. Вы есть строка, "0/5". «0/5» не представляет число (особенно, поскольку вы сказали, что это не доля), поэтому он не может быть преобразован в целое число, потому что это не тот же тип данных. Вам нужно будет изменить тип данных столбца, в котором вы хотите сохранить его, или сохранить ваши данные по-другому (например, сохранить два целых числа в отдельных столбцах).

+0

Большое вам спасибо. Я изменил тип данных coloumn's – user2516261

1

Разберите их отдельно, ТОГДА разделите.

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

Хотя вы хотели использовать парные? Это не имеет смысла использовать int здесь, так как вы делите.

EDIT: Основываясь на комментариях, вы хотите буквально сохранить 0/5 в базе данных. Целое число не имеет такого значения.

Я думаю, вам нужно изменить вашу базу данных, чтобы сохранить string, а это позволит вам хранить 0/5.

Если вы хотите, чтобы разобрать 0/5 из базы данных обратно на 2 отдельных целых чисел, используйте String.Split на струне, передавая ему /

+0

0/5 бывает int, но, очевидно, вход может легко включать другие случаи как 1/5. OP может потребовать удвоения или, возможно, захочет использовать пол/раунд/потолок, но должен будет уточнить. – Michelle

0

Если строка "0/5" используется только для отображения, то вам нужно только хранить два целочисленных компонента, которые составляют отображаемое значение. Вы используете эти два значения для создания «отображаемой строки» по мере необходимости.

Например, если это была оценка пользователя для викторины, тогда ваши два значения: «оценка пользователя» и «максимальная оценка». Каждый из них будет храниться как int в двух отдельных полях базы данных.

Затем в любое время вам нужно, чтобы отобразить его просто воссоздать строку, например:

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

Конечно, в примере викторины, вы, вероятно, будет в состоянии пересчитать «максимальное количество баллов» из другие данные в любом случае (например, количество вопросов), поэтому необходимо сохранить только первое значение, userScore.

В вашем примере, просто сохраните значение y в базе данных.

-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); 
+0

Что? Просто нет. – tnw

Смежные вопросы