2
NSLog(@"original float value = %f", [anNSNumber floatValue]);
                 
float newFloat = [anNSNumber floatValue] - 1.0f;
                 
NSLog(@"newFloat = %f", newFloat);

私にくれ

元のフロート値=215987480044765184.000000

newFloat = 215987480044765184.000000

どうやって単純にaから1を引くのfloatですか?

4

2 に答える 2

5

いいえ、それ以上単純化することはできません。浮動小数点数は整数とは異なります。

もう1つの注意点は、float型には最大24ビットの精度(小数点以下6〜7桁程度の精度)しか含めることができないということです。そこにある数は、で使用可能な精度を超えてfloatおり、減算量が小さすぎて24ビットの精度に影響を与えないため、演算によって結果が変更されることはありません

で演算を行っても問題は解決しません。これはdouble、の数が53ビットの精度を超えているためdoubleです。

要件によっては、64ビット整数型(long long型、またはより具体的なint64_t)が必要になる場合があります。さらに多くの数にこのような精度が必要な場合は、基本タイプでは不十分です。非常に高い精度が必要な場合は、外部ライブラリが必要になることがあります。

于 2012-06-22T02:46:27.587 に答える
0

3行目にあるのはなぜですか:NSLog(@ "newFloat =%f"、idOfLastTweet); NSLog(@ "newFloat =%f"、newFloat);の代わりに ?

于 2012-06-22T02:50:58.600 に答える