どうすればいいですか? abs() を試しましたが、int にしか機能しません。これを行うための組み込みの方法はありますか?
CGFloat flo = -123;
abs(flo)
これは0を返します
ベストアンサー1
fabs() を使用する
CGFloat f = -123.4f;
CGFloat g = fabs(f);
CGFloat
double
は、64 ビット マシンでは 、 32 ビット マシンではとして定義されますfloat
。64 ビットと 32 ビットの両方を対象としている場合、この回答はより複雑になりますが、それでも正しいです。
より大きいデータ型fabs()
で機能するため、を使用する必要があります。32 ビットでは、またはの絶対値を取得する場合にのみ、の戻り値( ) を( ) に割り当てることができます。大きな数の絶対値を格納しようとすると、32 ビットがオーバーフローする可能性があります。つまり、64 ビットは問題なく、32 ビットではとを混在させなければ問題ありません。double
float
fabs()
double
CGFloat
float
CGFloat
float
CGFloat
double
double
CGFloat
どうやら、このABS()
マクロは一部のコンパイラでは副作用を引き起こす可能性があるようです。