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 — Setzt die Genauigkeit aller BCmath-Funktionen
Beschreibung
bool bcscale
( int
$scale
)Diese Funktionen legt die Standard-Genauigkeit aller im Folgenden aufgerufenden BCmath-Funktionen fest, die nicht explizit die Genauigkeit angeben.
Parameter-Liste
-
scale -
Die Genauigkeitsangabe.
Rückgabewerte
Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben.
Beispiele
Beispiel #1 bcscale()-Beispiel
<?php
// Standard-Genauigkeit: 3
bcscale(3);
echo bcdiv('105', '6.55957'); // 16.007
// Die selbe Operation ohne Verwendung von bcscale()
echo bcdiv('105', '6.55957', 3); // 16.007
?>
bcscale
invincible at limitedintelligence dot com
08-Feb-2006 12:50
08-Feb-2006 12:50