2016-08-07 21 views
0

Ich schreibe ein Skript, um eine Reihe von Zahlen aus einer CSV-Datei zu nehmen und sie zusammenzufassen.Positive Additionsoperationen, die eine negative Zahl erzeugen

Ich habe die Werte aus dem CSV in eine List<string> extrahiert und bin über das, um sie zusammenzufügen. Die Zahlen sind Millisekunden-Darstellungen jeder Minute am Tag, also im Allgemeinen beginnend mit 0 und inkrementieren durch 6000.

Aus irgendeinem Grund scheinen die endgültigen Zahlen negativ zu sein. Ich überprüfe am Ende der Addition Operationen und die endgültige Anzahl ist weniger als 1.

Ich habe versucht, die Zahlen auf der Konsole zu drucken und sie sind richtig, ich denke, etwas falsch woanders?

Screenshot of sample out

enter image description here

Vielen Dank im Voraus.

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(); 

Antwort

4

einen long Wert anstelle des Standard int für diese totalSeconds verwenden. Der Wert geht anscheinend über Int32.MaxValue hinaus, so dass der Wert sich auf negativ umkehrt.

A long hat einen viel höheren Maximalwert, so dass Sie nicht diesen Überlauf-Effekt erhalten werden (zumindest nicht so schnell)

+0

Perfect, danke. –

Verwandte Themen