If you don't set the default scale, be careful when you're chaining together several BC math functions - since by default, these functions will round off your values, losing accuracy very quickly:
<?php
$a = 1.234
$b = 2.345
$c = 7.890
$ab = bcmul($a,$b); // 2
$abc = bcmul($ab,$c);
echo $abc; // 15
?>
... compare with the answer you get when you use more decimal places:
<?php
$a = 1.234
$b = 2.345
$c = 7.890
bcscale(15);
$ab = bcmul($a,$b); // 2.893730
$abc = bcmul($ab,$c);
echo $abc; // 22.83152970
?>
bcscale
(PHP 4, PHP 5)
bcscale — すべての BC 演算関数におけるデフォルトのスケールを設定する
説明
bool bcscale ( int $scale )デフォルトのスケールを設定します。これ以降、 BC 演算関数で明示的にスケールを指定しなかった場合にこの値を使用します。
パラメータ
- scale
スケール。
返り値
成功した場合に TRUE を、失敗した場合に FALSE を返します。
例
例 335. bcscale() の例
<?php
// デフォルトのスケールを 3 とします
bcscale(3);
echo bcdiv('105', '6.55957'); // 16.007
// これは、bcscale() を使用せずにおなじ結果を得ます
echo bcdiv('105', '6.55957', 3); // 16.007
?>
bcscale
invincible at limitedintelligence dot com
08-Feb-2006 08:50
08-Feb-2006 08:50