2016-08-07 3 views
0

私は、csvファイルから一連の数値を取り出して合計するスクリプトを作成しています。負の数を生成する正の加算演算

私はcsvから値をList<string>に抽出し、それをループしてそれらを加算しています。 数字は1日の各分のミリ秒表示です。したがって、一般的に0で始まり、6000で増分します。

何らかの理由で、最終的な数字が負のように見えます。 追加操作の最後に確認しており、最終カウントが1未満です。

数字をコンソールに印刷しようとしましたが、それは正しいですか、他のどこかに間違いがありますか?事前に

Screenshot of sample out

enter image description here

感謝。

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

答えて

4

そのtotalSecondsためlong値の代わりに、デフォルトintを使用してください。 値は明らかにInt32.MaxValueを超えているので、値は負の値にラップアラウンドします。あなたは(少なくとも、ではないとすぐに)

+0

パーフェクト、おかげでこのオーバーフロー効果を得ることはありませんので

longは、はるかに高い最大値を持っています。 –

関連する問題