我想将总数(例如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。
我想将总数(例如4.45)除以动态变量数(例如4.)。变量总数应始终为总数-AMOUNT。在x个变量上划分一个浮点数
如果通过4 Y划分ou会得到1,1125一轮(1.1125,2)你会得到1.11。而4 * 1.11 = 4.44。余下的0,01可以添加到最后一个增值变量,因此它将是1.12。
我给你写了一个函数,它几乎不正是你想要的(我返回数组)。你可以给你一定数量的金额和你想要退货的变数。它总是四舍五入到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);
谢谢大安!这正是我所期待的。 –
不客气。 – Daan
1)使用的磁盘阵列,而不是独立变量 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
首先你填写一个n-1数组,其中用动态数字四舍五入,然后加上最后一项减去现有项目总数。
1.您尝试了什么? 2.它应该除以4,并且数字可以完全相同,或者你希望它是4个随机数,总共达到4.55? – izk
如果我们将'4.55'除以'4',我们将有四个'1.1375',那么你的四个变量中的每一个都是相同的数字。那么,有没有条件不允许这样做? –
如果你除以4,你会得到1,1125一轮(1.1125,2)你会得到1.11。而4 * 1.11 = 4.44。余下的0,01可以添加到最后一个增值变量,因此它将是1.12。 –