These functions DO NOT round off your values. No arbitrary precision 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 like this:
<?php
function bcround($number, $scale=0) {
$fix = "5";
for ($i=0;$i<$scale;$i++) $fix="0$fix";
$number = bcadd($number, "0.$fix", $scale+1);
return bcdiv($number, "1.0", $scale);
}
?>
PHP.mk документација
bcscale
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Патека
function.bcscale.php
Локална патека за оваа страница.
Извор
php.net/manual/en
Оригиналниот HTML се реупотребува и локално се стилизира.
Режим
Прокси + превод во позадина
Кодовите, табелите и белешките остануваат читливи во истиот тек.
Референца
function.bcscale.php
bcscale
Референца за `function.bcscale.php` со подобрена типографија и навигација.
bcscale
(PHP 4, PHP 5, PHP 7, PHP 8)
bcscale — Set or get default scale parameter for all bc math functions
= NULL
Поставете или добијте ја стандардната скала за сите bc math функции
Ги поставува стандардните параметри за скала за сите последователни повици на bc math функции кои експлицитно не специфицираат параметар за скала.
Параметри
scale-
Ја добива тековната скала.
Вратени вредности
Фактор на скала.
Errors/Exceptions
Оваа функција фрла ValueError if scale
е надвор од валидниот опсег.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.0.0 |
scale сега е null.
|
| 7.3.0 |
bcscale() Враќа стара скала кога се користи како сет. Инаку се враќа тековната скала. scale сега може да се користи за добивање на тековниот фактор на скала; кога се користи како сет, сега враќа стара вредност на скалата. Претходно,
bcscale() беше задолжително, и true.
|
Примери
Пример #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
?>Белешки од корисници 4 белешки
секогаш враќаше ¶
пред 18 години
mwgamera at gmail dot com ¶
пред 9 години
Executing bcsacle() will change the scale value of fpm.conf, not only the current process.
ravenswd на gmail точка com ¶
пред 13 години
Simple, easy way to remove excess trailing zeros using rtrim:
<php>
// $total is the result of a bcmath calculation
if ( strpos($total, '.') !== false ):
$total = rtrim($total, '0');
$total = rtrim($total, '.');
endif;
</php>
sicerwork at aliyun dot com ¶
пред 11 години
edited bcround function with negative number support:
<?php
function bcround($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);
return bcadd($number, '0', $scale);
}
?>