我从数据库中得到一个数字,这个数字可能是float
或int
。
我需要将数字的小数精度设置为 3
,这使得数字不超过(关于小数)5.020
或 1518845.756
。
使用PHP
round($number, $precision)
我看到一个问题:
它对数字进行四舍五入。我需要一个函数来缩短小数点,而不更改它们的值,round()
似乎不遵循。
最佳答案
您可以使用 number_format()
实现这一目标:
echo number_format((float) $number, $precision, '.', '');
这会将 1518845.756789
转换为 1518845.757
。
但是如果你只是想将小数点的位数截短到 3,并且不舍入,那么你可以这样做:
$number = intval($number * ($p = pow(10, $precision))) / $p;
乍一看可能有点吓人,但这个概念真的很简单。你有一个数字,你将它乘以 103(变成 1518845756.789
),将它转换成一个整数,所以小数点后 3 位后的所有内容都被删除(变成 1518845756
),然后将结果除以 103(变为 1518845.756
)。
关于php - 在 PHP 中设置 float 的精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19875583/