例如,我有这行代码:
echo 10359023529 + 0.2137582935;
为什么会这样:
10359023529.2
而不是:
10359023529.2137582935
答案 0 :(得分:5)
使用:bcadd()
echo bcadd(10359023529, 0.2137582935, 10);
答案 1 :(得分:3)
这是浮点值的限制。浮点值存储为系数和指数。你会有很多精确的小数字和低精度的高数字。以下是您想要的详细信息:http://en.wikipedia.org/wiki/IEEE_754-2008
底线:高值将非常不精确。尝试使用较小的值范围。
以下是有关PHP的浮点精度的更多信息:http://php.net/manual/en/language.types.float.php
如果你真的需要高精度和高数字,请查看BC数学(http://www.php.net/manual/en/ref.bc.php)和GMP(http://www.php.net/manual/en/ref.gmp.php)。
答案 2 :(得分:1)
php.ini
中有一个模糊的选项,用于定义打印浮点数时要显示的有效位数。在我的情况下,它看起来如下
; The number of significant digits displayed in floating point numbers.
; http://php.net/precision
precision = 14
当然,这只涉及格式化,而不是浮点数本身就不精确的基本事实。根据{{3}},double的精度为15.95十进制数。