Home > Article > Backend Development > About the problem of sprintf intercepting decimals
Question: Keep 1 decimal place, do not round, fill in 0 when it is an integer
Many people say to use sprintf('%.1f',$str);
, but there are still problems with the results.
Finally, this method was used to solve the problem: echo sprintf('%.1f', floor( $str));
<code><?php $str1 = 12.34; $str2 = 12.35; $str3 = 12.36; echo sprintf('%.1f',$str1);//12.3 echo sprintf('%.1f',$str2);//12.3 echo sprintf('%.1f',$str3);//12.4 echo sprintf('%.1f', floor($str3));//12.3 ?> </code>
Didn’t you say you don’t want to round? Why is it that when rounding, 5 is not included but 6 is included?
But other functions number_format($str)
are all included at 5. Why is this?