PHP入門 数学関数 任意の精度で数値の演算を行う(BC Math関数)
任意の精度で数値の演算を行う方法を解説しています。
構文:abs関数
string bcadd(string $left_operand, string $right_operand [, int $scale])
int bccomp(string $left_operand, string $right_operand [, int $scale])
string bcdiv(string $left_operand, string $right_operand [, int $scale])
string bcmod(string $left_operand, string $modulus)
string bcmul(string $left_operand, string $right_operand [, int $scale])
string bcpow(string $left_operand, string $right_operand [, int $scale])
string bcpowmod(string $left_operand, string $right_operand, string $modulus[, int $scale])
bool bcscale(int $ scale)
string bcsqrt(string $operand [, int $scale])
string bcsub(string $left_operand, string $right_operand [, int $scale])
任意の精度で数値の演算を行うには、「BC Math」関数を使います。「BC Math」関数は、指定した小数点以下の桁数で数値の演算を行うことが出来ます。
BC Math関数の種類
関数 | 説明 |
---|---|
bcadd | 2つの任意精度の数値を加算する |
bccomp | 2つの任意精度の数値を比較する |
bcdiv | 2つの任意精度の数値を除算する |
bcmod | 2つの任意精度の数値を剰余を取得する |
bcmul | 2つの任意精度の数値を乗算する |
bcpow | 任意精度数値をべき乗する |
bcpowmod | 任意精度数値をべき乗の指定した数値による剰余 |
bcscale | すべてのBC演算関数におけるデフォルトのスケールを設定する |
bcsqrt | 任意精度数値の平方根を取得する |
bcsub | 任意精度数値の減算を行う |
例
<?php
// BC演算関数におけるデフォルトのスケールを
// 小数点以下5桁に設定する
bcscale(6);
// 2つの値を加算する
echo bcadd('1.23456789', '5'), "<br>"; // 6.234567
// 結果の小数点以下を3桁する
echo bcadd('1.2345678', '5', 3), "<br>"; // 6.234
// 2つの値を比較する
echo bccomp ('1', '2'), "<br>";
// 小数点以下3桁まで、 2つの値を比較する
// -1
echo bccomp ('1.00001', '1',3), "<br>"; // 0
// 小数点以下5桁まで、 2つの値を比較する
echo bccomp ('1.00001', '1',5), "<br>"; // 1
echo bcdiv('105', '6.55957'), "<br>"; // 16.007146
echo bcdiv('105', '6.55957', 3), "<br>"; // 16.007
// 2つの値の剰余を取得する
echo bcmod('4', '2'), "<br>"; // 0
echo bcmod('2', '4'), "<br>"; //2
// 2つの値を乗算する
echo bcmul('2', '4'), "<br>";
// 結果の小数点以下を3桁する
// 8
echo bcmul('1.34747474747', '35', 3), "<br>"; // 47.161
// べき乗(4.2の3乗)を計算する
echo bcpow('42', '3'), "<br>"; // 74.088
// 結果の小数点以下を2桁する
echo bcpow('42', '3', 2), "<br>"; // 74.08
//べき乗の指定した数値による剰余
// bamod(bcpow('2', '3', '3')と等価
// Windows環境では正常に動作しない
echo bcpowmod('2', '3', '3'), "<br>"; // 2
// 平方根を求める
echo bcsqrt('2'), "<br>";
// 結果の小数点以下を3桁する
// 1.1.414213
echo bcsqrt('2', 3), "<br>"; // 1.414
// // 2つの値を減算する
echo bcsub('1.23456789', '5'), "<br>"; // -3.765432
// 結果の小数点以下を4桁する
echo bcsub('1.234', '5', 4), "<br>"; // -3.7660