bcpow和pow有什么区别?

时间:2011-03-02 11:41:21

标签: php bcmath

有人可以向我解释我是否应该使用bcpow()代替pow()以及为什么?

据我所知,并非所有的php安装都启用了bcmath。因此,如果我编写一个开源项目,并希望尽可能少的依赖项/需求,我宁愿在我的代码中使用pow()。

但是使用pow()而不是bcpow()会有什么缺点?

3 个答案:

答案 0 :(得分:6)

bcpow()BCMath Arbitrary Precision Mathematics库的函数。

引用它的手册:

  

对于任意精度数学   PHP提供了二进制计算器   支持任意大小的数字   精度,表示为字符串。


另一方面,pow()仅限于floats,其大小有限(引用)

  

浮子的大小是   平台依赖,虽然是最大的   约为1.8e308,精度为   大约14个十进制数字是常见的   值(64位IEEE格式)


通常,您将使用pow()和其他基于浮动的函数(可能更快,并且始终启用);但是,如果您需要处理非常大的数字,则必须使用bcpow()

答案 1 :(得分:0)

根据manual bc*函数

  

[...]任意精度数学PHP提供二进制计算器,它支持任何大小和精度的数字,表示为字符串。

pow()仅限于运行它的系统上支持的最大数字表示。

答案 2 :(得分:0)

bcpow用于任意精度值。作为第三个参数,您可以指定昏迷后的位数。