わかりました、これはまったく意味がありません:
NSNumber を作成します。
NSNumber *n = [NSNumber numberWithInt:37669178];
次に、値を整数と浮動小数としてエコーします。
int i = [n intValue];
float f = [n floatValue];
それらの値は次のとおりです。
int: 37669178
float: 37669176.000000
は!?!?!
なぜこれが起こっているのか、それを回避する方法を誰かが私に説明してもらえますか. これは確かに精度の問題ではありません。37,669,178 は float の精度の範囲内です。
ありがとう、
ダグ
アップデート
OK、今、私は完全に混乱しています。math.h の参照
#define MAXFLOAT ((float)3.40282346638528860e+38)
整数値 37669178 は 3.7669178e+7 であり、最大許容浮動小数点値の範囲内です。したがって、[n floatValue] は 37669176.0 ではなく37669178.0を返す必要があります。
ここで何が欠けていますか?