2017-02-07 3 views
1

ошибка в этой строке, когда я даю строковое значение более 10 чисел, показывает исключение переполнения? сделано в Visual Studio весь код следующимint no = Int32.Parse (s1);

string s1 = s.ToString(); 

int no = Int32.Parse(s1); 
int r = 0; 
int sum = 0; 
for (int i = 0; i <s1.Length; i++) 
{ 
    r = no % 10; 
    sum = sum + r; 
    no = no/10; 
} 
+1

попробовать Int64.Parse (s1); – jose

+0

Просто используйте 'long.Parse (s1)', перед тем как выполнить преобразование, вам нужно проверить 'int.MaxValue'. –

+0

thnkx, но если длинный используется, я не могу сделать% операции с ним здесь, моя логика идет бесполезно так ?? –

ответ

1

Предполагая, что вы, как ваши текущие типы данных, вам потребуется некоторое подтверждение.

Сначала укажите десятичный знак, затем проверьте диапазон.

decimal d; 
bool ok = decimal.TryParse(s.ToString(), out d); 
if (!ok) throw new FormatException("Blah blah"); 
if (d > Int32.MaxValue || d < Int32.MinValue) throw new ArgumentOutOfRangeException("Blah blah"); 
int no = Convert.ToInt32(d); 
Смежные вопросы