通过JavaScript将舍入数字设置为最接近的0.11倍数

时间:2016-03-27 10:22:48

标签: javascript rounding

我需要将一个数字舍入到0.11的最接近倍数或圆整数

示例:

0.99 turns to 1.00
0.87 turns to 0.88
0.59 turns to 0.55
54.01 turns to 54.00

3 个答案:

答案 0 :(得分:2)

我建议将整数部分和小数部分分开。如果小数部分接近因子9,则返回整数部分加1,否则整数部分加上校正的小数部分。



function getRight(v) {
    var i = Math.floor(v),
        f = Math.round((v - i) / 0.11);                
    return i + (f === 9 || f * 0.11);
}

var array = [0.99, 0.87, 0.59, 54.01],
    result = array.map(getRight);

document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
&#13;
&#13;
&#13;

答案 1 :(得分:0)

也许你的意思是:

function roundStop(n) {return n%10==0?n/10:(n-n%10)/10+(n%10)*0.11}
function round(x){
var i=0;
while(roundStop(i)-x<0)i++;
return roundStop(i-1)-x>x-roundStop(i)?roundStop(i-1):roundStop(i)
}

答案 2 :(得分:-2)

Math.floor倒下了 Math.ceil Rounds Up