2012-04-27 10 views
2

ダウンロードファイルの残りの割合と残り時間を計算するためのコードは次のとおりです。私はchilkat FTP2モジュールからのデータを次のようにしています:byte/secと合計ファイルサイズと残りのファイルサイズ。ダウンロードの完了率を計算するエラーが発生しました

どうしたのですか?私はまだ、負または(0.00213)を非常に小さく、高い負のパーセント数と時間

int Calcbytesreceived = [ftp.AsyncBytesReceived intValue]; 

int Calcdownloadrate = [ftp.DownloadRate intValue]; 

// data from FTP chilkat module: fileSize (bytes) , ForCalcbytesreceived (bytes) , ForCalcdownloadrate (bytes/sec) all Int format 

double PercentOfFile = ((double)Calcbytesreceived/(double)fileSize) * 100 ; 

double SecondsRemaining = ((double)fileSize - (double)Calcbytesreceived)/(double)Calcdownloadrate ; 

double MinutesRemaining = (double)SecondsRemaining/60 ; 

NSLog(@"percent loaded = %@", PercentOfFile); 

答えて

5

PercentOfFileはdouble型であるを取得します。ダブル値を表示するには、 "%@"の代わりに "%f"を使用する必要があります。

NSLog(@"percent loaded = %f", PercentOfFile); 

EDIT:異なるNSLogsを使用するとき、ここで決定するための優れたリソースへのリンクである

http://www.cocoadev.com/index.pl?NSLog

+0

はい、あなたの最後の行がに変わります。そして、毎回キャストするのではなく、最初から 'Calcbytesreceived'と' Calcdownloadrate'を 'double'と宣言することができました。 – sch

+0

OK。ありがとう、私はどのようにMinutesRemainingを処理しますか? 'NSLog(@" percent loaded =%f "、Minutesremaining);'は動作しません。結果はほとんどの場合負です... ??? – Jan

+0

ええと... SecondsRemainingを記録すると正確な結果が得られますか?そうでない場合は、Calcdownloadrateの値を確認します.FTPトランザクション全体で更新されるため、取得した時点で有効な値がない可能性があります。 – JoshL

関連する問題