2013-02-17 91 views
1

我想計算一個長整型值除以整數給我什麼,我希望是一個雙,雖然我得到的結果是0.我使用的代碼.. 。Objective-C雙重長計算

double daysByYear = daysSinceBirthdayToService/365; 
NSLog(@"%d", daysByYear); 

在此代碼,daysSinceBirthdayToService變量是一個長雙可以使用以下代碼來NSLogged (long)daysSinceBirthdayToService

它在頭文件declaired作爲

@property (nonatomic) NSInteger daysSinceBirthdayToService; 
一個屬性

有人可以幫我解決這個問題,謝謝!

+1

對於格式「double」,您必須使用'%f',而不是'%d'。 – rmaddy 2013-02-17 22:22:08

回答

3

問題是/兩個多頭之間會做一個整體劃分。

要強制進行浮點除法,至少需要將其中一個操作數轉換爲double。

例如

double daysByYear = daysSinceBirthdayToService/(double)365; 

,或者如果你有一個文字使之成爲雙加小數點

double daysByYear = daysSinceBirthdayToService/365.0; 
0
double daysByYear = daysSinceBirthdayToService/365.0; 
-1

可以這麼認爲,%d輸出十進制數不是雙?

+0

'%d'代表'int'值。 '%f'應該用於'double'。 – rmaddy 2013-02-17 22:21:25

+0

NSLog(@「%d」,daysByYear);輸出雙轉換爲整數,所以有什麼問題? – insanebits 2013-02-17 22:23:30

+2

格式說明符無法完成轉換。會發生什麼是%d指定符會說「我需要一個'int'」。所以它會查看參數佔用的內存(在本例中爲double),並將這些字節解釋爲int的字節。由於內存實際上不是'int',因此產生的輸出可能是垃圾。 – rmaddy 2013-02-17 22:27:22