将浮点数除以x个变量

时间:2016-03-21 13:59:17

标签: php divide

我想将总量(例如4.45)除以动态数量的变量(例如4.变量的总和应该总是总量的总和。

  • var1 = 1.11
  • var2 = 1.11
  • var3 = 1.11
  • var4 = 1.12

如果你除以4,你将得到1,1125一轮(1.1125,2)你会得到1.11。并且4 * 1.11 = 4.44。剩余的0,01可以添加到最后一个变量中,因此它将是1.12。

3 个答案:

答案 0 :(得分:2)

您可以使用array_fill()

$tot   = 4.45;   # sum total
$n     = 4;      # addends number

$values = array_fill( 0, $n-1, round( $tot/$n,2 ) );
$values[ $n-1 ] = round( $tot - array_sum( $values ),2 );

print_r( $values );
echo array_sum($values) . PHP_EOL;

将输出:

Array
(
    [0] => 1.11
    [1] => 1.11
    [2] => 1.11
    [3] => 1.12
)
4.45

phpFiddle demo

首先,您使用动态数字填充整数舍入的 n-1 项目数组,然后添加最后项目减去现有项目的总和。

答案 1 :(得分:1)

我给你写了一个几乎完全符合你想要的功能(我返回一个数组)。您可以提供要返回的金额和变量数量。它总是舍入到2位小数

<?php
function divideAmount($amount, $numberOfVars){

    $values = [];

    $dividedAmount = $amount/$numberOfVars;

    for($i=1; $i<=$numberOfVars; $i++){
        $values[] = round($dividedAmount,2);
    }

    $newAmount = 0;
    foreach($values as $value){
        $newAmount += $value;   
    }

    if($newAmount != $amount){
        $amountLeft = $amount - $newAmount; 
        $values[$numberOfVars-1] += $amountLeft;
    }

    return $values;
}


$values = divideAmount(4.45, 4);

var_dump($values);

答案 2 :(得分:-1)

1)使用数组而不是单独的变量 2)对数组进行计数和求和