php - 在 PHP 中设置 float 的精度

标签 php precision rounding

我从数据库中得到一个数字,这个数字可能是floatint

我需要将数字的小数精度设置为 3,这使得数字不超过(关于小数)5.0201518845.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)。

Demo

关于php - 在 PHP 中设置 float 的精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19875583/

相关文章:

c - IEEE-754: "smallest"溢出条件

c# - 为什么除法结果会因施法类型而异?

php - 在将值写入文本文件 php 之前检查值是否存在

Php json_encode 数组输出\错误

php - 查询永远不会在 mysql 中执行 - 没有错误或超时

math - float 学有问题吗?

math - float 学坏了吗?

python - 四舍五入除以 2 的幂

python - 如何有效地将 numpy 数组的一列舍入到最接近的 0.5?

php - 如何使用 PHP 用 HTML 注释字符串(即如何通过偏移量维护有效的 HTML 将 HTML 标记插入字符串)?