php可以处理非常小的数字而不会舍入它们吗?例如,在计算exp(-99) + 1/2
时,php将其计算为0.5
。这是有问题的,如果以后我想要乘以给定的结果,而不是一个非常小的数字,它只是给出一半的数字。
echo exp(-99) + 1/2 // Outputs 0.5
答案 0 :(得分:0)
您不在浮点数支持的范围内。
在我的平台上(PHP浮动为64位)echo exp(-99);
当前返回1.0112214926104E-43
那是因为指数部分很宽,需要代表e^-99
但是当我添加... echo exp(-99)+0.5;
时,我得到0.5
您期望的结果是超过50位十进制数。
双浮点数没有这么大的尾数(通常限制在18-20位左右)。
要回答你的问题,如果你真的需要做这样的数学运算(处理非常小的数字而不对它们进行舍入)你可以使用 PHP的任意精度数学扩展: