在PHP中向float中添加一个整数会将float舍入为1位小数

时间:2010-10-19 01:18:20

标签: php floating-point rounding

例如,我有这行代码:

echo 10359023529 + 0.2137582935;

为什么会这样:

  

10359023529.2

而不是:

  

10359023529.2137582935

3 个答案:

答案 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十进制数。