Положительные операции сложения, дающие отрицательное число

Я пишу скрипт, чтобы взять серию чисел из CSV-файла и суммировать их.

Я извлек значения из csv в List<string> и перебираю это, чтобы сложить их вместе. Числа представляют собой миллисекунды представления каждой минуты дня, поэтому обычно они начинаются с 0 и увеличиваются на 6000.

Однако по какой-то причине окончательные числа кажутся отрицательными. Я проверяю в конце операций сложения, и окончательный счет меньше 1.

Я попытался напечатать числа в консоли, и они верны, я думаю, что-то не так где-то еще?

Screenshot of sample out

введите здесь описание изображения

Заранее спасибо.

var totalSeconds = 0;
var minutesCounted = 0;
var unzippedFolder = Compression.UnzipToFolder(zipPath);
var listOfSeconds = ReadCsvIndex(unzippedFolder[0], ",", 0, true);

foreach (var second in listOfSeconds)
{
   // Console.WriteLine(Int32.Parse(second)); // Prints correct numbers
   totalSeconds += Int32.Parse(second);
   minutesCounted++;
   Console.WriteLine(minutesCounted + totalSeconds);
}

Console.WriteLine(security + totalSeconds);
Console.WriteLine(minutesCounted);
File.Delete(unzippedFolder[0]);

if (totalSeconds > 1)
{
  Console.WriteLine(true);
}
else
{
   Console.WriteLine(false); // This is returning false
}
Console.ReadLine();

person 3therk1ll    schedule 07.08.2016    source источник


Ответы (1)


Используйте значение long вместо значения по умолчанию int для этого totalSeconds. Очевидно, значение превышает Int32.MaxValue, поэтому value превращается в отрицательное значение.

long имеет гораздо более высокое максимальное значение, поэтому вы не получите этого эффекта переполнения (по крайней мере, не так скоро).

person Hans Kesting    schedule 07.08.2016