2009-08-26 6 views
0

私は整数だけを含むCGFloatを持っています。実際には整数だけを表現したいという意味ですが、float inprecisionのために内部的には23.00000000000000000000000142かそのようなことが起こります。私はきれいな入力でNSDecimalNumberをフィードしようとします。だから、これは真に泥だらけの裸の整数であることを確認する必要があります。さて、これは良い方法だと思いますが、間違っているかもしれません:"float integer"を自然数に変換するための安全で有効な方法は?

NSInteger * intVal = floatVal;

これは、物語の終わりにそれらの断片的な部分を取り除くだけでしょうか?または、それを真の整数に変換するより安全な方法がありますか?

答えて

0

あなただけのフロートの整数部分を取りたいなら、私はあなただけで次の手順を実行できると信じて:

CGFloat myfloat = 23.0000000000142f; 
int myInt = (int) myfloat; 
+0

を理にかなっています。それはNSIntegerでも使えますか?それは先にこれをキャストせずにNSIntegerに浮動小数点を代入するよりも違いがありますか?私はボンネットの下で何が起こっているのか分かりませんが、それがそんなことをしていると想像できますか? –

+0

はい、NSIntegerで動作するはずです。メモリが正しく機能している場合、NSIntegerはint型とlong型のどちらかとして定義されています。 –

関連する問題