4

恥ずかしい質問ですが、私は iOS 6.1 を実行しており、次の行は False を返します。

if ([[UIDevice currentDevice].systemVersion floatValue] >= 6.1)

ただし、次は True を返します。

if ([[UIDevice currentDevice].systemVersion floatValue] >= 6.1f)

なんで?

4

3 に答える 3

0

かなりの量を読んだ後、この理由についての私の理解は次のとおりです。

• C は 1.2 のような数値を double として扱い、f で変更された場合、たとえば 1.2f を float として扱います • double も float もシステムによって 100% の精度で内部的に表現することはできません • float の表現エラーは double の表現エラーよりも高くなります

そのため、float と double を比較すると、ほとんどの場合、誤解を招く結果になります。重要でないシステムでは、2 つのフロートを比較するだけで十分です。

于 2013-04-04T14:24:49.823 に答える