CGFloatの絶対値を取る 質問する

CGFloatの絶対値を取る 質問する

どうすればいいですか? abs() を試しましたが、int にしか機能しません。これを行うための組み込みの方法はありますか?

CGFloat flo = -123;
abs(flo)

これは0を返します

ベストアンサー1

fabs() を使用する

CGFloat f = -123.4f;
CGFloat g = fabs(f);

CGFloatdoubleは、64 ビット マシンでは 、 32 ビット マシンではとして定義されますfloat。64 ビットと 32 ビットの両方を対象としている場合、この回答はより複雑になりますが、それでも正しいです。

より大きいデータ型fabs()で機能するため、を使用する必要があります。32 ビットでは、またはの絶対値を取得する場合にのみ、の戻り値( ) を( ) に割り当てることができます。大きな数の絶対値を格納しようとすると、32 ビットがオーバーフローする可能性があります。つまり、64 ビットは問題なく、32 ビットではとを混在させなければ問題ありません。doublefloatfabs()doubleCGFloatfloatCGFloatfloatCGFloatdoubledoubleCGFloat

どうやら、このABS()マクロは一部のコンパイラでは副作用を引き起こす可能性があるようです。

おすすめ記事