Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
sqrt() / pow() / fabs() / ceil() / floor()
平方根・べき乗・絶対値・切り上げ・切り捨てなど、よく使う数学関数です。『<math.h>』に定義されており、コンパイル時に『-lm』リンクオプションが必要な場合があります。
構文
double sqrt(double x); // x の正の平方根を返します(x >= 0 が必要です)。 double pow(double x, double y); // x の y 乗を返します。 double fabs(double x); // double 型の絶対値を返します。 double ceil(double x); // x 以上の最小の整数値(切り上げ)を返します。 double floor(double x); // x 以下の最大の整数値(切り捨て)を返します。 double round(double x); // 最も近い整数に四捨五入します(C99以降)。 double fmax(double x, double y);// x と y の大きい方を返します(C99以降)。 double fmin(double x, double y);// x と y の小さい方を返します(C99以降)。
関数一覧
| 関数 | 概要 | 例 |
|---|---|---|
| sqrt() | 平方根です。 | sqrt(9.0) → 3.0 |
| pow() | べき乗です。 | pow(2.0, 10.0) → 1024.0 |
| fabs() | 絶対値です。 | fabs(-3.5) → 3.5 |
| ceil() | 天井関数(切り上げ)です。 | ceil(1.2) → 2.0 |
| floor() | 床関数(切り捨て)です。 | floor(1.9) → 1.0 |
| round() | 四捨五入です。 | round(1.5) → 2.0 |
| fmax() | 大きい方の値です。 | fmax(3.0, 5.0) → 5.0 |
| fmin() | 小さい方の値です。 | fmin(3.0, 5.0) → 3.0 |
サンプルコード
#include <stdio.h>
#include <math.h>
int main(void) {
// sqrt で平方根を求めます。
printf("sqrt(2.0) = %.6f\n", sqrt(2.0)); // 『1.414214』と出力されます。
// pow でべき乗を計算します。
printf("2^10 = %.0f\n", pow(2.0, 10.0)); // 『1024』と出力されます。
// fabs で浮動小数点数の絶対値を求めます。
printf("fabs(-3.7) = %.1f\n", fabs(-3.7)); // 『3.7』と出力されます。
// ceil と floor で整数方向に丸めます。
double val = 2.3;
printf("ceil(%.1f) = %.1f\n", val, ceil(val)); // 『3.0』と出力されます。
printf("floor(%.1f) = %.1f\n", val, floor(val)); // 『2.0』と出力されます。
double neg = -2.3;
printf("ceil(%.1f) = %.1f\n", neg, ceil(neg)); // 『-2.0』と出力されます。
printf("floor(%.1f) = %.1f\n", neg, floor(neg)); // 『-3.0』と出力されます。
// ユークリッド距離の計算例です。
double dx = 3.0, dy = 4.0;
printf("距離 = %.1f\n", sqrt(dx*dx + dy*dy)); // 『距離 = 5.0』と出力されます。
return 0;
}
概要
コンパイルコマンドに『-lm』フラグを付けないとリンクエラーになる環境があります(例:GCC on Linux)。
sqrt() に負の値を渡すと NaN(非数)が返ります。引数が正であることを必ず確認してください。エラー状態は errno や fpclassify() で検出できます。
三角関数については『sin() / cos() / tan()』、対数・指数については『log() / exp()』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。