2

私はこのコードでdoubleから1を減算しようとしています:

-(NSMutableArray *)getMoreTwitterDataWithMaxID:(double)maxID {
    double newestID = (maxID - 1);
    NSLog(@"newest ID is %f and maxID is %f", newestID, maxID);
    // other code
}

コンソールはこれを吐き出している:

2012-05-15 11:21:14.693 nearYou[2570:3a03] newest ID is 202429657738522624.000000 and maxID is 202429657738522624.000000

なぜ減算されないのかわかりません。。。

どんな助けでも大歓迎です!

4

2 に答える 2

4

double データ型の限界に達している可能性があります。代わりにNSDecimalを使用できます。

于 2012-05-15T18:44:19.350 に答える
3

倍精度浮動小数点形式の限界に達している可能性があります。64ビット浮動小数点形式には52ビットの仮数しかありません。つまり、指数を使用する前に、任意の整数精度で52ビットの整数しか保持できません。あなたの数はそれよりも大きいので、1つの整数と次の可能な整数の間のギャップは1より大きくなりました。

于 2012-05-15T18:39:20.590 に答える