这似乎有效 - http://jsfiddle.net/nQakD/。
使用 jQuery 作为示例,但如果您了解 PHP,您应该能够轻松地将其转换为 PHP。如果您还需要 php 代码,请告诉我,我会为您编写。
我也会在这里粘贴代码 -
$(document).ready(function() {
var price = 17.48, people = 4, payment = (price/people).toFixed(2), count=0;
var payments = [];
for(i = 0; i < people; i++) {
payments.push(payment);
}
if(payment*people != price) {
var currentPayment = payment*people;
$(payments).each(function() {
if(currentPayment < price) {
currentPayment = (currentPayment-this).toFixed(2);
var newPayment = parseFloat(this)+0.01;
payments[count] = newPayment.toFixed(2);
currentPayment = parseFloat(currentPayment)+parseFloat(newPayment);
}
else if(currentPayment > price) {
currentPayment = (currentPayment-this).toFixed(2);
var newPayment = parseFloat(this)-0.01;
payments[count] = newPayment.toFixed(2);
currentPayment = parseFloat(currentPayment)+parseFloat(newPayment);
}
count++;
});
}
$(payments).each(function() {
$("#result").append("<b>"+this+"</b><br/>");
});
});
编辑:
这是工作的php代码 -
$price = 13.34;
$people = 4;
$payment = (float)$price/$people;
$payment = 0.01 * (int)($payment*100);
$count = 0;
$payments = Array();
for($i = 0; $i < $people; $i++) {
array_push($payments, $payment);
}
if($payment*$people != $price) {
$currentPayment = $payment*$people;
foreach($payments as $pay) {
if($currentPayment < $price) {
$currentPayment = $currentPayment-$pay;
$currentPayment = 0.01 * (int)($currentPayment*100);
$newPayment = (float)$pay+0.01;
$newPayment = 0.01 * (int)($newPayment*100);
$payments[$count] = $newPayment;
$currentPayment = (float)$currentPayment+$newPayment;
}
else if($currentPayment > $price) {
$currentPayment = $currentPayment-$pay;
$currentPayment = 0.01 * (int)($currentPayment*100);
$newPayment = (float)$pay-0.01;
$newPayment = 0.01 * (int)($newPayment*100);
$payments[$count] = $newPayment;
$currentPayment = (float)$currentPayment+$newPayment;
}
$count++;
}
}
foreach($payments as $payed) {
echo '<b>'.$payed.'</b><br />';
}
编辑2:
这应该可以解决 js 问题 - http://jsfiddle.net/nQakD/也更新了上面的代码。
编辑 3:
编辑了 PHP 代码和 JS 代码,因此它适用于所有示例 - http://jsfiddle.net/nQakD/。