防止php四舍五入小数


Prevent php from rounding small numbers

php可以处理非常小的数字而不四舍五入吗?例如,当计算exp(-99) + 1/2时,php将其计算为0.5。这是有问题的,如果以后我想要乘以给定的结果,而不是一个非常小的数字,它只给出一半的数字。

echo exp(-99) + 1/2 // Outputs 0.5

超出了浮点数支持的范围。

在我的平台上(PHP浮动是64位)echo exp(-99);当前返回1.0112214926104E-43

这是因为指数部分足够宽,可以表示e^-99

但是我补充说…echo exp(-99)+0.5;我得到0.5

您期望的结果应该是大于50位的小数。

双浮点数没有这么大的尾数(通常限制在18-20位小数左右)。

如果你真的需要做这样的数学运算(处理非常小的数字而不舍入它们),你可以使用PHP的任意精度数学扩展: http://php.net/manual/en/book.bc.php