2012-01-12 11 views
-1

完全な複製:
Issue with float and double data types in objective Cデータ型のObj-C

[皮肉なことに、あなたは答えを知っている必要があり、重複する質問を見つける。]

+2

件名の[Wikipedia記事](http://en.wikipedia.org/wiki/Floating_point)から引用すると、「バイナリ浮動小数点数では正確に表現できない数字(たとえば1/3と0.1など)どのような精度であっても問題はない」 – aroth

+0

これは、客観的なcよりも浮動小数点表現の一般的なコンピュータサイエンスのトピックと関連があることがよくある質問です。私は多くの重複した質問の1つをタグ付けします。 –

+0

なぜ 'NSLog'が' gdb'と異なって印刷するのかについては、32ビットの浮動小数点数が約7桁の精度に適しています。したがって、おそらく 'NSLog'は第7桁の後に切り詰めてより意味のある出力を出すのに対し、' gdb'は正確さを考慮せずに変数に格納されている正確な値を示しているようです。興味深いことに、私は両方の行動が彼らの特定の状況において正しいと主張することができると思う。 – aroth

答えて

0

0.1は、バイナリ(0.0001100110011 ...)で '反復10進数'であるため、0.1の表現は不正確です。 NSLogは出力を四捨五入または切り捨てている可能性があります。

+0

バイナリ*で* decimal *を繰り返しますか? (あなたが何を意味しているのか分かりませんが、それはちょっと奇妙なことです。) –

+0

「バイナリでバイナリを繰り返す」と言われましたが、他の拠点で小数部分が繰り返されている数値を参照する標準的な方法はありますか? – 0x5f3759df

+0

"小数部分が繰り返されている数字"?しかし、私は "小数点の繰り返し"は明確にそのアイデアを得ることを認めます。 –