2

整数で割ったlong値を計算して、doubleになると予想される結果を取得しようとしていますが、取得する結果は0です。使用しているコード...

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

このコードでは、daysSinceBirthdayToService変数はLong Doubleであり、次のコードを使用してNSLoggedできます。(long)daysSinceBirthdayToService

のプロパティとしてヘッダーファイルでdeclairedされます

@property (nonatomic) NSInteger daysSinceBirthdayToService;

誰かがこれを手伝ってくれますか、ありがとう!

4

3 に答える 3

6

問題は、2つのロングの間で/が積分除算を行うことです。

浮動小数点除算を強制するには、オペランドの少なくとも1つをdoubleにキャストする必要があります。

例えば

double daysByYear = daysSinceBirthdayToService/(double)365;

または、リテラルがある場合は、小数点を追加してそれをdoubleにします

double daysByYear = daysSinceBirthdayToService/365.0;
于 2013-02-17T22:18:48.830 に答える
-1
double daysByYear = daysSinceBirthdayToService/365.0;
于 2013-02-17T22:17:04.967 に答える
-1

%dがdoubleではなく10進数を出力する可能性はありますか?

于 2013-02-17T22:19:59.303 に答える