【C++】絶対値を求める【忘備録】

スポンサーリンク
homeimage 忘備録
スポンサーリンク

はじめに

自分用の忘備録。且つ、もしかしたら誰かの役に立てばいいなーという感じで。

プログラミングの正しさとかは全く考慮せずに書くので、案件とかの時はリファレンスちゃんと調べて読むように。

abs関数を使う場合

「cmath」ヘッダを読み込んで、「std::abs(データ)」とすれば良い。

例として以下にプログラムを示す。

「cfloat」は「float型」と「double型」の最大値を使うためのヘッダで、絶対値を使う上ではあまり関係ない。

#include <iostream>
#include <cmath>
#include <cfloat>

int main(){
	
	int a = INT_MAX;
	int b = -1*INT_MAX;
	
	float c = FLT_MAX;
	float d = -1*FLT_MAX;
	
	double e = DBL_MAX;
	double f = -1*DBL_MAX;
	
	std::cout << std::abs(a) << std::endl;
	std::cout << std::abs(b) << std::endl;
	
	std::cout << std::abs(c) << std::endl;
	std::cout << std::abs(d) << std::endl;
	
	std::cout << std::abs(e) << std::endl;
	std::cout << std::abs(f) << std::endl;
	
	return 0;
}

実行結果は次のようになる。(環境によって数値が変わるかも?)

2147483647
2147483647
3.40282e+38
3.40282e+38
1.79769e+308
1.79769e+308

同じ値が二つずつ表示されていれば大丈夫。

自作する場合

自作する場合はif文で次のように制御すれば良い。

要するに次のプログラムのようにするだけ。

if(変数 < 0){
 
 変数 *= -1;
 }

例えば次のような形。

#include <iostream>
#include <cmath>
#include <cfloat>

int main(){
	
	int a = INT_MAX;
	int b = -1*INT_MAX;
	
	float c = FLT_MAX;
	float d = -1*FLT_MAX;
	
	double e = DBL_MAX;
	double f = -1*DBL_MAX;
	
	if(b < 0){
		
		b *= -1;
	}
	if(d < 0){
		
		d *= -1;
	}
	if(f < 0){
		
		f *= -1;
	}
	
	std::cout << std::abs(a) << std::endl;
	std::cout << std::abs(b) << std::endl;
	
	std::cout << std::abs(c) << std::endl;
	std::cout << std::abs(d) << std::endl;
	
	std::cout << std::abs(e) << std::endl;
	std::cout << std::abs(f) << std::endl;
	
	return 0;
}

ここではb,d,fしか絶対値の処理をしていない。

結果は次の通り。

2147483647
2147483647
3.40282e+38
3.40282e+38
1.79769e+308
1.79769e+308

最後に

abs関数を使う方が楽です。

忘備録なのでこんな感じで。

コメント

タイトルとURLをコピーしました