加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

找到重复小数的重复部分 – PHP

发布时间:2020-05-25 08:56:34 所属栏目:PHP 来源:互联网
导读:我使用此代码随机生成重复小数… do{ $divisor_array = array(3, 6, 9, 11, 22, 33); $divisor = $divisor_array[array_rand($divisor_array)]; $number = mt_rand(1, 100); $decimal_value = $number / $divisor;

我使用此代码随机生成重复小数…

do{
    $divisor_array = array(3,6,9,11,22,33);
    $divisor = $divisor_array[array_rand($divisor_array)];
    $number = mt_rand(1,100);

    $decimal_value = $number / $divisor;
} while (strlen($decimal_value) < 5);

echo $number / $divisor;

我想在重复部分的重复条上显示该数字.

示例:5.83434343434343 ….
将是5.8< span style =“text-decoration:overline;”> 34< / span>

如果重复小数是随机生成的,有关如何执行此操作的任何想法?

要说这并不像我想象的那么容易.但我得到了它的工作.我确信有一种更有效的方法可以做到这一点,希望其他人会改进这一点.特别是它被打印的部分.
$number1 =  $number / $divisor;
if(findRepeat( $number1 ) !== false)
{
    $result = findRepeat($number1);
    $leadingNum = strstr($number1,'.',true);
    $nonRepeat = substr($number1,strpos($number1,'.') + 1,$result['position']);
    if($nonRepeat == '')
        $nonRepeat = '.';

    $repeat = substr($number1,$nonRepeat) + strlen($nonRepeat),$result['patternSize']);
    $nonRepeat = $nonRepeat == '.' ? '.' : '.'.$nonRepeat;
    echo $leadingNum.$nonRepeat."<span style='text-decoration:overline'>".$repeat."</span>";

}
else
  echo number_format( $number1,6);

现在为功能

function findRepeat($number)
{
    $maxLength = 6;
    $decimal = substr($number,strpos($number,'.') + 1 );
    if(strlen($decimal) >= $maxLength )
        $decimal = substr($decimal,$maxLength);
    else
        $maxLength = strlen($decimal);

    for($i =0; $i < $maxLength - 3; ++$i)
    {
        //check for single repeition
        if( $decimal[$i] == $decimal[$i + 1] &&  $decimal[$i + 1] == $decimal[$i+2])
            return array('position'=>$i,'patternSize'=>1);
        //triple repetition
        if(substr($decimal,$i,3) == substr($decimal,$i + 3,3) )
            return array('position'=>$i,'patternSize'=>3);
        //double repetition
        if(substr($decimal,2) == substr($decimal,$i + 2,2) )
            return array('position'=>$i,'patternSize'=>2);
    }

    return false;
}

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读