为了账号安全,请及时绑定邮箱和手机立即绑定

php中的整数除法系统问题

php中的整数除法系统问题

PHP
慕无忌1623718 2023-09-15 21:10:45
我在整数除法脚本中遇到问题。我想要的是,如果我们将 8 分为 3 部分。它应该显示所有四舍五入的数字。比如,3,3,2 如果我们将这 3 相加,结果就是 8。但以下脚本的划分存在一些差异。它除以 2,2,4。也是 8。但我喜欢上面的 1。请任何人在这种情况下提供帮助。这是代码。$numbertodivise = 8;$no = 3;$intnumber = intval($numbertodivise / $no);$rem = $numbertodivise % $no;$array = [];for($i=1;$i<=$no;$i++) {    if($i==$no) {        $array[] = $intnumber + $rem;    } else {        $array[] = $intnumber;    }}print_r($array);它的输出是Array ( [0] => 2 [1] => 2 [2] => 4 )请帮我把它做成这样Array ( [0] => 3 [1] => 3 [2] => 2 )8不是固定整数。它将是动态的.. 8,9,19,22,88,9888,任何数字都可以。
查看完整描述

3 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

编辑 将其更改$turn为$noin for 循环。您可以将其用于任何号码。


<?php

    $numbertodivide = 8;

    $no = 3;

    $array = [];

    $added=0;//initialize the variable to track added number to make the given number divisible

    while($numbertodivide%$no){

        $numbertodivide+=1;

        $added++;

    }

    $turn=$numbertodivide/$no;//get how many times we have to repeat the divider to get the given number

    for($i=0;$i<$no-1;$i++){

        $array[]=$turn;

    }

    $array[]=$turn-$added;//trim the added number from the last input of the number.

?>


查看完整回答
反对 回复 2023-09-15
?
墨色风雨

TA贡献1853条经验 获得超6个赞

intval()向下舍入。您想要四舍五入,所以使用ceil().


$intnumber = ceil($numbertodivise / $no);

$rem = $numbertodivise % $intnumber;


$array = array_fill(0, $no, $intnumber);

if ($rem != 0) {

    $array[count($array)-1] = $rem;

}


查看完整回答
反对 回复 2023-09-15
?
噜噜哒

TA贡献1784条经验 获得超7个赞

无需循环。使用您的变量:


$count = ceil($numbertodivise / $no);

$rem = $numbertodivise - ($no * ($count-1));

$array = array_fill(0,$count-1,$no);

$array[] = $rem;

结果:


Array

(

    [0] => 3

    [1] => 3

    [2] => 2

)


查看完整回答
反对 回复 2023-09-15
  • 3 回答
  • 0 关注
  • 80 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信