天天看點

php BC math 高精度數學函數簡介需求安裝運作時配置資源類型預定義常量

簡介

PHP 為任意精度數學計算提供了二進制電腦(Binary Calculator),它支援任意大小和精度的數字,以字元串形式描述。

需求

自 PHP 4.0.4 以來,libbcmath 都綁定在 PHP 内部。本擴充不需要其它外部庫的支援。

安裝

本類函數僅在 PHP 編譯時配置了 --enable-bcmath 時可用。在 PHP 3 中,本類函數僅在 PHP 編譯時沒有配置 --disable-bcmath 時可用。

PHP 的 Windows版本已經内置該擴充子產品的支援。無需加載任何附加擴充庫即可使用這些函數。

運作時配置

這些函數的行為受 php.ini 的影響。

表格 1. BC 數學庫配置選項

名稱 預設值 可修改範圍 更新記錄
bcmath.scale "0" PHP_INI_ALL 自 PHP 5.0.0 起可用。

有關 PHP_INI_* 常量進一步的細節與定義參見 附錄 G。

以下是配置選項的簡要解釋。

bcmath.scale integer
所有 bcmath 函數中十進制數字的數目。參見 bcscale()。

資源類型

本擴充子產品未定義任何資源類型。

預定義常量

本擴充子產品未定義任何常量。

目錄 bcadd -- Add two arbitrary precision numbers bccomp -- Compare two arbitrary precision numbers bcdiv -- Divide two arbitrary precision numbers bcmod --  Get modulus of an arbitrary precision number bcmul -- Multiply two arbitrary precision number bcpow --  Raise an arbitrary precision number to another bcpowmod --  Raise an arbitrary precision number to another, reduced by a specified modulus bcscale --  Set default scale parameter for all bc math functions bcsqrt --  Get the square root of an arbitrary precision number bcsub --  Subtract one arbitrary precision number from another

bcadd()

<?php $a = '1.234'; $b = '5'; echo bcadd($a, $b);     // 6 echo bcadd($a, $b, 4);  // 6.2340 ?>

bccomp()

<?php echo bccomp('1', '2') . "\n";   // -1 echo bccomp('1.00001', '1', 3); // 0 echo bccomp('1.00001', '1', 5); // 1 ?>

bcdiv()

<?php echo bcdiv('105', '6.55957', 3);  // 16.007 ?>

bcmod()

<?php echo bcmod('4', '2'); // 0 echo bcmod('2', '4'); // 2 ?>

bcmul()

<?php echo bcmul('1.34747474747', '35', 3); // 47.162 echo bcmul('2', '4'); // 8 ?>

bcpow()

<?php echo bcpow('4.2', '3', 2); // 74.08 ?>

bcpowmod()

<?php $a = bcpowmod($x, $y, $mod); $b = bcmod(bcpow($x, $y), $mod); // $a and $b are equal to each other. ?>

bcscale()

<?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 ?>

bcsqrt()

<?php echo bcsqrt('2', 3); // 1.414 ?>

bcsub()

<?php $a = '1.234'; $b = '5'; echo bcsub($a, $b);     // -3 echo bcsub($a, $b, 4);  // -3.7660 ?>