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
?>
高精度 數樓梯
洛谷 p1255 數樓梯 題目描述 樓梯有n階,上樓可以一步上一階,也可以一步上二階。編乙個程式,計算共有多少種不同的走法。分析 只用稍微用用腦子就可以看出,這是一道斐波那契數列的問題 不過省略了開頭的1,即這裡的數列為 12358 注意n 0,1,2的情況。然而這題需要高精所以寫的特別長 incl...
高精度 數樓梯
題目 樓梯有n階,上樓可以一步上一階,也可以一步上二階。編乙個程式,計算共有多少種不同的走法。乙個數字,樓梯數。走的方式幾種。輸入 1 複製 4輸出 1 複製 5說明 提示 60 n 50 100 n 5000 原本一看,這不是 斐波那契數列 嗎,直接公式下去寫完,dp i dp i 1 dp i ...
高精度數演算法 加法
基本資料型別 長度有限。所以大的資料被單獨拿出來。高精度演算法就是模擬我們在紙上的運算。要死要死要死 我忘記了。乙個空間有剩餘的int後面是自帶補0的啊。還有平時沒有注意到的三目運算子 length str1 str2 str1 str2 上 include include define max 1...