2011-10-04 30 views
1

我遇到了一個看起來很容易的問題,但我無法使它工作。計算目標C中的下載百分比

我正在爲使用目標C的OSX做一個簡單的下載管理器。作爲應用程序的一部分,我嘗試計算當前下載的百分比。即時嘗試使用此代碼,但它不會爲我工作

long double precent = (bytesDownloaded/downloadSize) * 100; 
NSLog(@"precnt %Lf",precent); 
NSLog(@"Downloadedbyret: %lld", bytesDownloaded); 

bytesDownloaded和downloadSize很長。

可有人請指教,謝謝

+0

請解釋這是行不通的。是否有錯誤訊息?日誌顯示錯誤的數字? – sosborn

+0

bytesDownloaded和downloadSize的類型是什麼?爲什麼長達一倍的完成百分比? – zaph

回答

4

爲了得到正確的答案,你必須轉換值長一倍。

long double precent = ((long double)bytesDownloaded/(long double)downloadSize); 
NSLog(@"precnt %Lf",precent); 
NSLog(@"Downloadedbyret: %lld", bytesDownloaded); 
+0

工作!非常感謝。 –

0

分母是int嗎,將它改爲浮點?嘗試:

long double precent = (bytesDownloaded/(downloadSize * 1.0)); 
NSLog(@"precnt %Lf",precent); 
NSLog(@"Downloadedbyret: %lld", bytesDownloaded); 
0

要獲得%完成你需要100

long double precent = (bytesDownloaded/downloadSize) * 100.0; 

繁衍如果值bytesDownloaded和downloadSize是INT,你需要將其轉換爲一個浮點值。

或者,如果整數倍數的股息100第一:

(bytesDownloaded * 100)/downloadSize; 
+0

謝謝!問題是變量的投射。原本我有「* 100」我只是爲了測試目的而將其刪除。 –