在PHP中设置浮点数的精度

Mos*_*ebi 9 php precision rounding

我从数据库中得到一个数字,这个数字可能是float或者int.

我需要设置数字的小数精度3,这使得数字不长于(关于小数)5.0201518845.756.

使用PHP

round($number, $precision)
Run Code Online (Sandbox Code Playgroud)

我看到一个问题:

它使数字四舍五入.我需要一个函数来只缩短小数,而不改变它们round( )似乎不遵循的值.

Ama*_*ali 21

你可以number_format()用来实现这个目标:

echo number_format((float) $number, $precision, '.', ''); 
Run Code Online (Sandbox Code Playgroud)

这将转换1518845.7567891518845.757.

但是,如果你只是想短暂切断小数的个数为3,而不是圆形,那么你就可以做到以下几点:

$number = intval($number * ($p = pow(10, $precision))) / $p;
Run Code Online (Sandbox Code Playgroud)

起初看起来可能有些令人生畏,但这个概念非常简单.你有一个数字,你将它乘以10 3(它变成1518845756.789),将它转换成一个整数,这样就可以删除3个小数后的所有内容(变为1518845756),然后将结果除以10 3(变为1518845.756).

演示

  • @arod:那是*我的*点.如果*number*×*multiplier*太大而无法表示为整数,那么您最终会产生废话.在64位计算机上,您需要更大的数字和精度才能获得无意义的值. (2认同)

geo*_*j11 12

它的声音floor与小数点一样.所以你可以尝试类似的东西

floor($number*1000)/1000
Run Code Online (Sandbox Code Playgroud)