【发布时间】:2011-10-21 03:50:01
【问题描述】:
我目前正在尝试弄清楚如何在 PHP 中使用任意精度的数字。所以我想我的第一个问题是什么是任意精度数学。我试着用谷歌搜索一个好的定义,但由于某种原因,没有人能用足够简单的词来表达它。
二、PHP中的BCMath和GMP库有什么区别?我听说 GMP 的 API 是“更新鲜的”,但 idk。一个更好吗?
我的最后一个问题是 BCMath/GMP 需要什么类型的数字。显然它采用字符串形式的普通整数(例如“5.34”),但我已经看到 BCMath 函数直接与表示常规整数的八位字节字符串一起使用的实现(例如“\x12\x23\x45\x67”),我'听说被称为“bigint”,但谷歌又一次没有为我带来任何好处。
【问题讨论】:
-
理论上两者都允许使用任意长度的数字,只要它们作为字符串输入库即可。它归结为具有更好的 API 来满足您的目的。 bc 纯粹使用字符串,而 gmp 可以接受字符串但也使用自己的内部表示。
-
注意:要使用任意精度的算术,您可以使用诸如 brick/math 之类的库,它会在后台自动使用 GMP、BCMath 甚至纯 PHP,具体取决于每个扩展的可用性.这样您就不必在 GMP 和 BCMath 之间进行选择,并且可以使用一个不错的 OO API。
标签: php biginteger gmp arbitrary-precision bcmath