3

'floatValue'を使用してfloat値に変換するNSNumberと、精度に違いがあります。たとえば、値が2.3の「myNumber」があり、NSNumber「floatValue」を使用してmyNumberをfloatに変換すると、その値は2.29999になります。しかし、私は正確に2.30000が必要です。2.3以降のゼロの数に問題はありません。「2.9」ではなく「2.3」が必要です。

どうすればいいですか?

4

4 に答える 4

3

正確な精度が必要な場合は、を使用しないでくださいfloatdoubleより高い精度が必要な場合は、を使用してください。それはまだ正確ではありません。myNumberに10を掛けて、unsigned intに変換して算術演算を実行し、floatまたはdoubleに変換して、10で除算すると、最終結果がより正確になる可能性があります。これらのどれも十分に正確でない場合は、GNUMPBignumなどの任意精度の算術ライブラリを調べることをお勧めします。

于 2013-02-26T11:19:47.727 に答える
1

私は次のことを行いましたが、正しく表示されています

NSNumber *num = [NSNumber numberWithFloat:2.3];
float f = [num floatValue];
NSLog(@"%f", f);
于 2013-02-26T11:20:41.767 に答える
0

次のようなもので遊ぶことができます:

  float x = 2.3f;
NSNumber *n = [NSNumber numberWithFloat:x];
NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init];
[fmt setPositiveFormat:@"0.#"];
NSString *s = [fmt stringFromNumber:n];
float f = [s floatValue];
于 2013-02-26T11:21:18.010 に答える