0

有记录表,其中列是 12 个月 + 摘要。我有简单的 jQuery 操作,onChange每个月的摘要行除数相等。

因为它是会计资料,所以我将数字四舍五入到 .00 并将其存储在数据库中。我想禁止输入不能被 12 整除的数字。

不幸的是我的算法有缺陷:/

(例如输入 11,更改为 11.08 != 12 * 0.93)

function round(num) {
    return Math.ceil(num * 100) / 100;
}

$("#summary").change(function() {
    var summaryValue = $(this).val();
    var monthCount = $('.month').length;

    var remainder = (summaryValue * 100) % monthCount;
    summaryValue = (summaryValue * 100 + remainder) / 100; 
    $(this).val(summaryValue);    

    var avarage = round(summaryValue / monthCount);

    $('.month').each( function( key, value ) {
        $(this).val(avarage);
    });
});

http://jsfiddle.net/igos/z3EEQ/

任何想法如何更好地实施它?

  1. 我的意思是可以被 12 整除,每个允许的数字在昏迷后最多被 2 个数字分开。
  2. 所以 11 会变成 11,04 因为 0.92 * 12 = 11.04;
  3. 1324 => 1324,08 = 110,34*12
  4. 我不能说:坏号码,因为我想向用户提供他最初想输入的最接近的号码。
4

1 回答 1

0

你应该减去余数。如果您想要最接近原始的数字,则减去余数并添加 12,如果余数大于 6:

var remainder = (summaryValue * 100) % monthCount;
summaryValue = (summaryValue * 100 - remainder + (remainder > 6? 12 : 0)) / 100; 
于 2013-05-22T13:37:34.393 回答