PHP – bcsub()関数を使って任意精度の数値を減算する方法
PHPのbcsub()数学関数は、任意精度(arbitrary precision)の数値を別の数値から減算するために使用されます。この関数は2つの任意精度数値を文字列として受け取り、指定された精度にスケーリングした上で、その減算結果を返します。
構文
string bcsub($num_str1, $num_str2, $scaleVal)
パラメータ
bcsub()関数は、$num_str1、$num_str2、$scaleVal の3つのパラメータを受け取ります。
$num_str1 − 減算の左オペランドを表す文字列型のパラメータです。
$num_str2 − 減算の右オペランドを表す文字列型のパラメータです。
$scaleVal − 省略可能な整数型のパラメータで、結果の出力における小数点以下の桁数を設定します。デフォルト値は0です。
戻り値
bcsub()関数は、$num_str1 と $num_str2 の減算結果を文字列(string)として返します。
例1:$scaleVal パラメータを使用しない bcsub() 関数
<?php // bcsub()関数の使用例 // 任意精度の2つの入力数値 $num_string1 = "10.555"; $num_string2 = "3"; // $scaleVal パラメータなしで2つの数値を減算 $result = bcsub($num_string1, $num_string2); echo "Output without scaleVal is: ", $result; ?>
出力
Output without scaleVal is: 7
$scaleVal パラメータを指定しない場合、bcsub() 関数は出力結果から小数点以下を切り捨てます。上記の例では、「10.555 − 3」の計算結果である「7.555」ではなく、小数部分が省略された「7」が出力されています。
例2:$scaleVal パラメータを使用する bcsub() 関数
次に、同じ入力値に対して scaleVal を 3 に設定して実行してみましょう。この場合、出力には小数点以下3桁までが表示されます。
<?php // bcsub()関数の使用例 // 任意精度の2つの入力数値 $num_string1 = "10.5552"; $num_string2 = "3"; // scale値として3を指定 $scaleVal = 3; // $scaleVal パラメータありで2つの数値を減算 $result = bcsub($num_string1, $num_string2, $scaleVal); echo "Output with scaleVal is: ", $result; ?>
出力
Output with scaleVal is: 7.555
このように、$scaleVal を指定することで、小数点以下の桁数を制御した高精度な減算処理が可能になります。金額計算など、浮動小数点数の誤差が許容できない場面では、bcsub() をはじめとする BCMath 系の関数が非常に役立ちます。
-
PHPのimagecreatefrompng()関数でPNGファイルやURLから新しい画像を作成する方法
PHPのimagecreatefrompng()は、標準で用意されている組み込み関数のひとつで、PNGファイルまたはURLから新しい画像を作成します。指定されたファイル名から取得した画像を表す「画像リソース識別子」を返します。なお、この関数を利用するには、PHP環境にGDライブラリが組み込まれている必要があります。構文resource imagecreatefrompng(string $filename)パラメータimagecreatefrompng()が受け取るパラメータは$filenameのひとつだけです。この引数には、読み込みたいPNG画像のファイル名、または画像へのパス(URL)を指
-
PHPのimagecreatefromjpeg()関数でJPEGファイルから新しい画像を作成する方法
imagecreatefromjpeg()は、PHPに組み込まれている関数の一つで、JPEGファイルから新しい画像を生成するために使用されます。指定したファイル名から取得した画像を表す画像リソース識別子(イメージID)を返します。この関数は、GDライブラリが有効になっている環境で動作し、JPEG画像の読み込み、編集、再保存など、さまざまな画像処理の起点としてよく利用されます。構文resource imagecreatefromjpeg(string $filename)パラメータimagecreatefromjpeg()が受け取るパラメータは$filenameの1つだけです。ここには、読み込む