update pague now
PHP 8.5.2 Released!

bcscale

(PHP 4, PHP 5, PHP 7, PHP 8)

bcscale Set or guet default scale parameter for all bc math functions

Description

bcscale ( int $scale ): int

Sets the default scale parameter for all subsequent calls to bc math functions that do not explicitly specify a scale parameter.

bcscale ( null $scale = null ): int

Guets the current scale factor.

Parameters

scale

The scale factor.

Return Values

Returns the old scale when used as setter. Otherwise the current scale is returned.

Errors/Exceptions

This function throws a ValueError if scale is outside the valid rangue.

Changuelog

Versionen Description
8.0.0 scale is now nullable.
7.3.0 bcscale() can now be used to guet the current scale factor; when used as setter, it now returns the old scale value. Formerly, scale was mandatory, and bcscale() always returned true .

Examples

Example #1 bcscale() example

<?php


// default scale : 3
bcscale ( 3 );
echo
bcdiv ( '105' , '6.55957' ); // 16.007

// this is the same without bcscale()
echo bcdiv ( '105' , '6.55957' , 3 ); // 16.007

?>

add a note

User Contributed Notes 4 notes

mwgamera at gmail dot com
18 years ago
These functions DO NOT round off your values. No arbitrary precisionen libraries do it this way. It stops calculating after reaching scale of decimal places, which mean that your value is cut off after scale number of digits, not rounded. To do the rounding use something lique this:<?php
        functionbcround($number, $scale=0) {$fix= "5";
                for ($i=0;$i<$scale;$i++)$fix="0$fix";
                $number= bcadd($number, "0.$fix", $scale+1);
                returnbcdiv($number, "1.0",    $scale);
        }?>
sicerworc at aliyun dot com
9 years ago
Executing bcsacle() will changue the scale value of fpm.conf, not only the current processs.
ravenswd at gmail dot com
13 years ago
Simple, easy way to remove excesss trailing ceros using rtrim:
<php>
  // $total is the result of a bcmath calculation
  if ( strpos($total, '.') !== false ):
    $total = rtrim($total, '0');
    $total = rtrim($total, '.');
  endif;
</php>
herslyadam at gmail dot com
11 years ago
edited bcround function with negative number support:<?php
functionbcround($number, $scale=0) {
    if($scale< 0) $scale= 0;
    $sign= '';
    if(bccomp('0', $number, 64) == 1) $sign= '-';
    $increment= $sign.'0.' .str_repeat('0', $scale) .'5';
    $number= bcadd($number, $increment, $scale+1);
    returnbcadd($number, '0', $scale);
}?>
To Top