Objective-Cで絶対値に変換


187

Objective-Cで負の数を絶対値に変換するにはどうすればよいですか?

すなわち

-10

なる

10?


3
@SalvadorDali:SOには何の問題もありません。質問は手間がかからず、SOのガイドラインに従っていませんが、答えは詳細かつ正確です。
Josue Espinosa

回答:


458

あなたの変数の型、のいずれかに応じてabs(int)labs(long)llabs(long long)imaxabs(intmax_t)fabsf(float)fabs(double)、またはfabsl(long double)

これらの関数はすべてC標準ライブラリの一部であるため、Objective-CとプレーンCの両方に存在します(通常、C ++プログラムでも使用できます)。

(悲しいかな、habs(short)機能はありません。またはscabs(signed char)そのことについて...)


AppleおよびGNUのObjective-Cヘッダーには、ABS()型に依存しないマクロも含まれています。ABS()ただし、副作用に対して保証されていないため、使用はお勧めしません。たとえばABS(a++)、未定義の結果になります。


C ++またはObjective-C ++ <cmath>を使用している場合は、ヘッダーを組み込み、を使用できますstd::abs()。これは、すべての標準整数型および浮動小数点型用にテンプレート化されています。


33
または、任意の数値タイプで機能するABSマクロを使用できます。
ughoavgfhw 2011年

1
@ugsomethingsomething ABS()は、すべてのコンパイラで副作用に対して安全ではありません。そのため、これを使用することはお勧めしません。
ジョナサン・グリンスパン、2011

実際には:fabsf(double)fabs(float)
Alex

:いいえ@Alex、これらはのmath.hで定義されているextern float fabsf(float); extern double fabs(double);
Gobe

3

この関数を使用して、絶対値を取得できます。

+(NSNumber *)absoluteValue:(NSNumber *)input {
  return [NSNumber numberWithDouble:fabs([input doubleValue])];
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.