PHP任意精度數學函式擴充套件包BCMath

2021-08-20 17:20:39 字數 2583 閱讀 4841

bcmath擴充套件提供了一套bc(binary calculator)數學函式,它是乙個高精度運算的函式庫,可以準確地對任意精度的數字進行運算。

php的windows版本已內建對此擴充套件的支援,linux版本則需要手動

安裝bcmath。

bcadd($left_operand,$right_operand[,$scale]):兩個任意精度數字的加法計算,計算實際結果不滿足精度時會補0。

bcsub($left_operand,$right_operand[,$scale]):兩個任意精度數字的減法計算,計算實際結果不滿足精度時會補0。

bcmul($left_operand,$right_operand[,$scale]):兩個任意精度數字的乘法計算,計算實際結果不滿足精度時會返回按實際精度返回。

bcdiv($left_operand,$right_operand[,$scale]):兩個任意精度數字的除法計算,計算實際結果不滿足精度時會補0。如果除數($right_operand)按指定精度($scale)取值為0,則返回null,並產生乙個警告。

bcmod($left_operand,$modulus):對乙個任意精度的數字取模計算,如果係數($modulus)為0,則返回null,並產生乙個警告。計算結果的正負只取決於$left_operand。

bcpow($left_operand,$right_operand[,$scale]):任意精度數字的乘方計算,$left_operand可以是任何數字,$right_operand只能為整數,且當$right_operand小於0時,當計算結果不滿足精度時會補0,當$right_operand不小於0時,當返回的結果不需要精確到所指定的精度時,會按實際的精度返回。

bcsqrt($operand[,$scale]):任意精度數字的二次方根,如果運算元($operand)是負數則返回null,並產生乙個警告。

bcpowmod($base,$exponent,$modulus[,$scale=0]):先計算$base的$exponent次方,然後對乘方結果對$modulus求模,$scale必須為0,如果$exponent為負數,則返回null。如果$base、$exponent與$modulus不是整數,會產生乙個警告。此函式php4不支援。

bccomp($left_operand,$right_operand[,$scale]):比較兩個任意精度的數字。如果相等返回0,如果$left_operand>$right_operand返回1,否則返回-1。

bcscale($scale)

設定所有bc數學函式的預設小數點保留位數。設定成功返回true,否則返回false。

在以上函式中除bcscale()外所有的精度都是可選引數,當不顯示指定精度,且並未呼叫bcscale()方法時,精度的預設值為php安裝目錄下php.ini檔案中bcmath.scale配置的值,預設為0。

<?php

$a=1.2345;

$b=6.7;

echo bcadd($a,$b);

echo bcadd($a,$b,2);

echo bcadd($a,$b,5);

echo bcsub($a,$b);

echo bcsub($a,$b,2);

echo bcsub($a,$b,5);

echo bcmul($a,$b);

echo bcmul($a,$b,2);

echo bcmul($a,$b,5);

$a=5;

$b=2;

echo bcdiv($a,$b);

echo bcdiv($a,$b,2);

echo bcdiv($a,$b,5);

echo bcmod($a,$b);

echo bcmod($a,-$b);

echo bcmod(-$a,$b);

echo bcmod(-$a,-$b);

echo bcpow($a,$b);

echo bcpow($a,-$b,5);

$a=-5.1

echo bcpow($a,$b,5);

$a=9

$b=5.1;

echo bcsqrt($a,5);

echo bcsqrt($b);

echo bcsqrt($b,3);

echo bcpowmod(5,2,3);

echo bcpowmod(-5,2,3);

echo bcpowmod(5,2,-3);

echo bcpowmod($a,$b,2);

echo bcpowmod($a,$b,5);

$a=1.2345123

$b=1.2345456

echo bccomp($a,$b);

echo bccomp($a,$b,4);

echo bccomp($a,$b,5);

?>

php BC math 高精度數學函式

php 為任意精度數學計算提供了二進位制計算器 binary calculator 它支援任意大小和精度的數字,以字串形式描述。自 php 4.0.4 以來,libbcmath 都繫結在 php 內部。本擴充套件不需要其它外部庫的支援。本類函式僅在 php 編譯時配置了 enable bcmath ...

php高精度數計算

一 前方有坑 php在使用加減乘除等運算子計算浮點數的時候,經常會出現意想不到的結果,特別是關於財務資料方面的計算,給不少工程師惹了很多的麻煩。比如今天工作終於到的乙個案例 a 2586 b 2585.98 var dump a a a b 期望的結果是 float 0.02 實際結果 float ...

php高精度數值計算

bcadd 將兩個高精度數字相加 bccomp 比較兩個高精度數字,返回 1,0,1 bcdiv 將兩個高精度數字相除 bcmod 求高精度數字餘數 bcmul 將兩個高精度數字相乘 bcpow 求高精度數字乘方 bcpowmod 求高精度數字乘方求模,數論裡非常常用 bcscale 配置預設小數點...