<p>计算随机小数长度范围之间的值,支持小数点后多位计算</p><pre style="background-color:#262e37;color:#ffffff;font-family:'Consolas';font-size:11.3pt;"><br/><span style="color:#f92672;">function </span><span style="color:#a6e22e;">getRandFloat</span>(<span style="color:#660000;">$start</span>,<span style="color:#660000;">$end</span>){<br/><br/> $FloatLength <span style="color:#f92672;">= </span><span style="color:#66d9ef;font-style:italic;">max</span>(<span style="color:#a6e22e;">getFloatLength</span>(<span style="color:#660000;">$start</span>),<span style="color:#a6e22e;">getFloatLength</span>(<span style="color:#660000;">$end</span>));<br/> $jishu_rand <span style="color:#f92672;">= </span><span style="color:#66d9ef;font-style:italic;">pow</span>(<span style="color:#ae81ff;">10</span>,$FloatLength);<br/><br/> <span style="color:#660000;">$start </span><span style="color:#f92672;">= </span><span style="color:#66d9ef;font-style:italic;">bcmul</span>(<span style="color:#660000;">$start </span>,$jishu_rand, $FloatLength);<br/> <span style="color:#660000;">$end </span><span style="color:#f92672;">= </span><span style="color:#66d9ef;font-style:italic;">bcmul</span>(<span style="color:#660000;">$end </span>,$jishu_rand, $FloatLength);<br/> $rand <span style="color:#f92672;">= </span><span style="color:#66d9ef;font-style:italic;">bcdiv</span>(<span style="color:#66d9ef;font-style:italic;">rand</span>(<span style="color:#660000;">$start</span>,<span style="color:#660000;">$end</span>),$jishu_rand,$FloatLength);<br/> <span style="color:#f92672;">return </span>$rand;<br/>}<br/><span style="color:#66837f;background-color:#191f26;">//</span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">计算小数点后位数</span><span style="color:#66837f;font-family:'宋体';"><br/></span><span style="color:#f92672;">function </span><span style="color:#a6e22e;">getFloatLength</span>(<span style="color:#660000;">$num</span>) {<br/> $count <span style="color:#f92672;">= </span><span style="color:#ae81ff;">0</span>;<br/> $temp <span style="color:#f92672;">= </span><span style="color:#66d9ef;font-style:italic;">explode </span>( <span style="color:#e6db74;">'.'</span>, <span style="color:#66d9ef;font-style:italic;">strval</span>(<span style="color:#660000;">$num</span>) );<br/> <span style="color:#f92672;">if </span>(<span style="color:#66d9ef;font-style:italic;">count</span>( $temp ) <span style="color:#f92672;">> </span><span style="color:#ae81ff;">1</span>) {<br/> $decimal <span style="color:#f92672;">= </span><span style="color:#66d9ef;font-style:italic;">end </span>( $temp );<br/> $count <span style="color:#f92672;">= </span><span style="color:#66d9ef;font-style:italic;">strlen </span>( $decimal );<br/> }<br/> <span style="color:#f92672;">return </span>$count;<br/>}<br/><br/><span style="color:#66d9ef;font-style:italic;">var_dump</span>(<span style="color:#a6e22e;">getFloatLength</span>(<span style="color:#e6db74;">'0.00001'</span>));<br/><span style="color:#66d9ef;font-style:italic;">var_dump</span>(<span style="color:#a6e22e;">getFloatLength</span>(<span style="color:#ae81ff;">0.00001</span>));<br/><span style="color:#66837f;background-color:#191f26;">//</span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">注意必须传字符串,否则没办法计算小数点后位数</span><span style="color:#66837f;font-family:'宋体';"><br/></span><span style="color:#f92672;">echo </span><span style="color:#a6e22e;">getRandFloat</span>(<span style="color:#e6db74;">'0.00001'</span>,<span style="color:#e6db74;">'0.0000589'</span>);</pre><p><br/></p>
相关文章