谭佩锋 發表於 2019-8-30 12:57:00

php保留两位小数

<p><span style="font-size: 18px">1.不进位的情况</span></p>
<p>比如3.149569取小数点后两位,最后两位不能四舍五入。结果:3.14。</p>
<p>可以使用<span style="font-size: 14pt"> floor</span> 函数</p>
<p>该函数是舍去取整。例如,floor(4.66456) 结果:4 。 <br>floor(9.1254) 结果9 。</p>
<p>因此,去小数点后两位,需要先乘以100,然后舍去取整,再除以100,即:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 128, 1)">$a</span>=<span style="color: rgba(0, 128, 128, 1)">floor</span>(3.149569*100)/100</pre>
</div>
<p><span style="color: rgba(51, 102, 255, 1)">这时浮点计算会出现一个bug,通过PHP的无类型特性来解决这个问题,先strval转成字符串,再自动识别类型。下面计算百分比已经使用上strval()函数了</span></p>
<p>计算百分比</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 128, 1)">$successRate</span> = <span style="color: rgba(0, 128, 128, 1)">floor</span>(strval((2/3<span style="color: rgba(0, 0, 0, 1)">)*10000))/10000*100;

$result = $successRate.</span>'%';</pre>
</div>
<p><span style="font-size: 18px">2.四舍五入的情况</span></p>
<p>&nbsp;<span style="font-size: 14pt">round </span>函数</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">float</span> <span style="color: rgba(0, 128, 128, 1)">round</span> ( <span style="color: rgba(0, 0, 255, 1)">float</span> val [, int precision])</pre>
</div>
<p>返回将 val 根据指定精度 precision(十进制小数点后数字的数目)进行四舍五入的结果。</p>
<p>precision 也可以是负数或零(默认值)。</p>
<div class="cnblogs_code">
<pre>&lt;?<span style="color: rgba(0, 0, 0, 1)">php

</span><span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(0, 128, 128, 1)">round</span>(3.4);         <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 3</span>

<span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(0, 128, 128, 1)">round</span>(3.5);         <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 4</span>

<span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(0, 128, 128, 1)">round</span>(3.6);         <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 4</span>

<span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(0, 128, 128, 1)">round</span>(3.6, 0);      <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 4</span>

<span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(0, 128, 128, 1)">round</span>(1.95583, 2);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 1.96</span>

<span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(0, 128, 128, 1)">round</span>(1241757, -3); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 1242000</span>

<span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(0, 128, 128, 1)">round</span>(5.045, 2);    <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 5.04</span>

<span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(0, 128, 128, 1)">round</span>(5.055, 2);    <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 5.06</span></pre>
</div>
<p>&nbsp;<span style="font-size: 14pt">sprintf 函数</span></p>
<p>实现四舍五入,并且如果是不带小数位数的,会自动用指定的字符(指定的0)补至指定的小数位数</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(0, 128, 128, 1)">sprintf</span>("%01.2f", 5.228);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">5.23</span>

<span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(0, 128, 128, 1)">sprintf</span>("%01.2f", 5.224);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">5.22</span>

<span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(0, 128, 128, 1)">sprintf</span>("%01.2f", 5);      <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">5.00</span></pre>
</div>
<p>&nbsp;<span style="font-size: 14pt">number_format 函数</span></p>
<p>如果是不带小数位数的,会自动用0补至指定的小数位数</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(0, 128, 128, 1)">number_format</span>(5.228,2);    <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">5.23</span>

<span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(0, 128, 128, 1)">number_format</span>(5.224,2);    <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">5.22</span>

<span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(0, 128, 128, 1)">number_format</span>(5,2);      <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">5.00</span></pre>
</div>
<p>&nbsp;<span style="font-size: 14pt"> round 函数</span></p>
<p style="text-align: left">此函数可以实现四舍五入,但是如果是不带小数位数的,处理后也不带小数数位</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(0, 128, 128, 1)">round</span>(5.228,2);    <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">5.23</span>

<span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(0, 128, 128, 1)">round</span>(5.224,2);    <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">5.22</span>

<span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(0, 128, 128, 1)">round</span>(5,2);      <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">5</span></pre>
</div>
<p>&nbsp;<span style="font-size: 14pt"> php进一法取整</span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(0, 128, 128, 1)">ceil</span>(4.4);   <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">5</span>

<span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(0, 128, 128, 1)">ceil</span>(4.6);   <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">5</span></pre>
</div>
<p>&nbsp;<span style="font-size: 14pt"> php舍去法取整</span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(0, 128, 128, 1)">floor</span>(4.4);      <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">4</span>

<span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(0, 128, 128, 1)">floor</span>(4.6);      <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">4</span></pre>
</div>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/niuben/p/11434430.html
頁: [1]
查看完整版本: php保留两位小数