2016-03-21 117 views
-1

我想将总数(例如4.45)除以动态变量数(例如4.)。变量总数应始终为总数-AMOUNT。在x个变量上划分一个浮点数

  • VAR1 = 1.11
  • VAR2 = 1.11
  • VAR3 = 1.11
  • VAR4 = 1.12

如果通过4 Y划分ou会得到1,1125一轮(1.1125,2)你会得到1.11。而4 * 1.11 = 4.44。余下的0,01可以添加到最后一个增值变量,因此它将是1.12。

+0

1.您尝试了什么? 2.它应该除以4,并且数字可以完全相同,或者你希望它是4个随机数,总共达到4.55? – izk

+2

如果我们将'4.55'除以'4',我们将有四个'1.1375',那么你的四个变量中的每一个都是相同的数字。那么,有没有条件不允许这样做? –

+0

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

回答

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); 
+0

谢谢大安!这正是我所期待的。 –

+0

不客气。 – Daan

-1

1)使用的磁盘阵列,而不是独立变量 2)计数和求和阵列

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数组,其中用动态数字四舍五入,然后加上最后一项减去现有项目总数。