PHP数学转换金额

PHP数学转换金额,php,math,floor,Php,Math,Floor,我正在尝试将板球翻转,即6转换为显示0.6,12转换为显示1.6。除了最后一部分,它返回了完整的数字,我让它全部工作 我的代码: foreach($numberofballs as $x){ $first = floor($x / 6); $last = $x - ($first * 6); echo $first.'.'.$last; } 假设需要为此循环转换下面的数组,让我们为测试分配一个数组 $numberofballs = array(1,2,3,4,5,6);

我正在尝试将板球翻转,即
6
转换为显示
0.6
12
转换为显示
1.6
。除了最后一部分,它返回了完整的数字,我让它全部工作

我的代码:

foreach($numberofballs as $x){
    $first = floor($x / 6);
    $last = $x - ($first * 6);
    echo $first.'.'.$last;
}
假设需要为此循环转换下面的数组,让我们为测试分配一个数组

$numberofballs = array(1,2,3,4,5,6);

foreach($numberofballs as $x){
    $first = floor($x / 6);
    $last = $x - ($first * 6);
    echo $first.'.'.$last;
}

/* notes
for 1 it does it right = 0.1
for 2 it does it right = 0.2
for 3 it does it right = 0.3
for 4 it does it right = 0.4
for 5 it does it right = 0.5
how its supposed to work for 6:
for 6 I do not want to get = 1 I would like to get 0.6 and no there is never 0.7
/ end notes */

我并不是说上面的代码是错误的,我只是希望得到正确的最终值。

尝试以下方法:

foreach( $numberofballs as $x){


       $first = floor($x / 6);
       $last = $x - ($first * 6);
       if($last==0 && $first>0) {$last=6; $first-=1;}
       echo $first.'.'.$last;
    }

下面是一个有趣的方法来处理这个问题,使用
base\u convert
,但仍然将
.6
作为第十位,而不是在第五位之后滚动。5:

$numberofballs = range(1,24);

foreach( $numberofballs as $x){

    $round = ceil($x/6) - 1;
    echo  base_convert($x + $round, 10, 7)/10;

}
通过使用基数7,您可以保留.6,但显然第二组的值将减少1,第三组的值将减少2,等等。但是如果我们根据当前球计算回合数(第一轮为0,第二轮为1,等等),并在基数转换之前将其添加到当前球数中,它将始终被正确且静止地调整。1到。6作为符号

这避免了对6、12、18等进行调整的条件的需要,因为无论计算哪个球,圆计算都会对其进行调整。它还可以转换为一个简单的函数,将任何数字转换为正确的表示法,而无需跟踪以前的数字:

function bowls2overs($ball_number) {

    $round = ceil($ball_number/6) - 1;
    return base_convert($ball_number + $round, 10, 7)/10;

}

你为什么不干脆用这个词呢?类似于:base_convert($points/10,10,6)或简单的模运算:$result=($points%6)/10;它根本没有给你正确的输出。尝试了几种方法,上面的解决方案已经达到了最好的效果,但是最终结果并不理想。@Tularis-你的方法没有调整为使用x.6作为10的符号,而不是滚动到x.0。我已经调整了您的想法作为替代解决方案。如果($last==0),则可以:上述解决方案的效果与预期一样@谢谢你!,我们让一切变得美丽!你也别担心@很高兴有用!你的方法可能也行,但我还没试过。从外观上看,它似乎正在发挥作用。谢谢