はじめに
自分用の忘備録。且つ、もしかしたら誰かの役に立てばいいなーという感じで。
プログラミングの正しさとかは全く考慮せずに書くので、案件とかの時はリファレンスちゃんと調べて読むように。
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関数を使う方が楽です。
忘備録なのでこんな感じで。
コメント