プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
PHP、数値の累乗を計算する
あっ、関数があるのですね(^^;
結論から書くと

pow(【基数】,【指数】)

でOKです。
例えば

pow(10,2)

の結果は10の2乗で「100」になります。

なお、PHP5.6以降では

【基数】 ** 【指数】

のような書き方もできます。
例えば

10 ** 2

の結果は10の2乗で「100」です。

それでは詳細……と言うほどでもないですが、詳細を書いていきます。

とある処理で10の累乗計算をする必要が出てきてですね。
自分で処理を実装しないとダメなの?と思ったのが、今回のきっかけです。

Google先生、如何でしょう(--?

ふむふむ(--)

標準で関数があるのですね。

pow(【基数】,【指数】)

でOKでした\(--)/
例えば

echo pow(10,2);

を実行すると

100

と表示されます。

ついでなので、いろいろやってみました。

こんなコードを実行したところφ(--)

<?php

echo "01:10の2乗:" . pow(10, 2) . "\n";
echo "02:10の0乗:" . pow(10, 0) . "\n";
echo "03:10の-1乗:" . pow(10, -1) . "\n";
echo "04:10の-2乗:" . pow(10, -2) . "\n";
echo "05:10の0.1乗:" . pow(10, 0.1) . "\n";
echo "06:10の0.2乗:" . pow(10, 0.2) . "\n";
echo "07:0の2乗:" . pow(0, 0) . "\n";
echo "08:0の2乗:" . pow(0, 2) . "\n";
echo "09:-2の2乗:" . pow(-2, 2) . "\n";
echo "10:-2の3乗:" . pow(-2, 3) . "\n";
echo "11:-10の-1乗:" . pow(-10, -1) . "\n";
echo "12:-10の-2乗:" . pow(-10, -2) . "\n";
echo "13:-10の0.1乗:" . pow(-10, 0.1) . "\n";
echo "14:-10の0.2乗:" . pow(-10, 0.2) . "\n";
echo "15:「a」の「b」乗:" . pow("a", "b") . "\n";
echo "16:「あ」の「い」乗:" . pow("あ", "い") . "\n";

こんな結果になりましたよφ(--)

01:10の2乗:100
02:10の0乗:1
03:10の-1乗:0.1
04:10の-2乗:0.01
05:10の0.1乗:1.2589254117942
06:10の0.2乗:1.5848931924611
07:0の2乗:1
08:0の2乗:0
09:-2の2乗:4
10:-2の3乗:-8
11:-10の-1乗:-0.1
12:-10の-2乗:0.01
13:-10の0.1乗:NAN
14:-10の0.2乗:NAN
15:「a」の「b」乗:1
16:「あ」の「い」乗:1

注目すべきは、13~16でしょうか。

マイナス数値に対して小数で累乗するとエラーになります。
また、文字を無理やり累乗してもエラーになりませんでした。
「入力値の数値チェックは、ちゃんとやれ!」ということですね。

なお、PHP5.6以降では「pow()」の代わりに「**」が使えます。

例えば、こんなコードを実行すると

<?php

echo "17:10の2乗:" . 10 ** 2 . "\n";
echo "18:10の0乗:" . 10 ** 0 . "\n";
echo "19:10の-1乗:" . 10 ** -1 . "\n";
echo "20:10の-2乗:" . 10 ** -2 . "\n";
echo "21:10の0.1乗:" . 10 ** 0.1 . "\n";
echo "22:10の0.2乗:" . 10 ** 0.2 . "\n";
echo "23:0の2乗:" . 0 ** 0 . "\n";
echo "24:0の2乗:" . 0 ** 2 . "\n";
echo "25:-2の2乗:" . -2 ** 2 . "\n";
echo "26:-2の3乗:" . -2 ** 3 . "\n";
echo "27:-10の-1乗:" . -10 ** -1 . "\n";
echo "28:-10の-2乗:" . -10 ** -2 . "\n";
echo "29:-10の0.1乗:" . -10 ** 0.1 . "\n";
echo "30:-10の0.2乗:" . -10 ** 0.2 . "\n";
echo "31:「a」の「b」乗:" . "a" ** "b" . "\n";
echo "32:「あ」の「い」乗:" . "あ" ** "い" . "\n";

こんな結果になりますφ(--)

17:10の2乗:100
18:10の0乗:1
19:10の-1乗:0.1
20:10の-2乗:0.01
21:10の0.1乗:1.2589254117942
22:10の0.2乗:1.5848931924611
23:0の2乗:1
24:0の2乗:0
25:-2の2乗:-4
26:-2の3乗:-8
27:-10の-1乗:-0.1
28:-10の-2乗:-0.01
29:-10の0.1乗:-1.2589254117942
30:-10の0.2乗:-1.5848931924611
31:「a」の「b」乗:1
32:「あ」の「い」乗:1

「pow()」を使ったときと、まったく同じ結果ですね。

ということで、数値を累乗するときは

・pow()
・「**」(PHP5.6以降)


を使えばOKです。

そんな感じ\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● PHP  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事