在 PHP 中设置浮点数的精度

2022-08-30 21:36:03

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

我需要将数字的小数精度设置为 ,这使得数字不长于(关于小数)或 。floatint35.0201518845.756

使用 PHP

round($number, $precision)

我看到一个问题:

它对数字进行舍入。我需要一个函数来缩短小数,而不改变它们的值,这似乎不是跟随的。round( )


答案 1

您可以使用 number_format() 来实现此目的:

echo number_format((float) $number, $precision, '.', ''); 

这将转换为 .1518845.7567891518845.757

但是,如果您只想将小数位数缩短为3,而不是四舍五入,则可以执行以下操作:

$number = intval($number * ($p = pow(10, $precision))) / $p;

乍一看可能看起来很吓人,但这个概念真的很简单。你有一个数字,你把它乘以103(它变成),把它转换为一个整数,这样3个小数位之后的所有内容都被移除(变成),然后将结果除以103(变成)。1518845756.78915188457561518845.756

演示


答案 2

它听起来像小数。所以你可以尝试类似的东西floor

floor($number*1000)/1000

推荐