通过 JavaScript 将数字舍入到最接近的 0.11 的倍数

Round number to the closest multiple of 0.11 via JavaScript

我需要将数字四舍五入到最接近的 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

Math.floor向下舍入 Math.ceil 四舍五入

我建议把整数部分和小数部分分开。如果小数部分接近因数 9,则 return 整数部分加一,否则整数部分加修正后的小数部分。

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>');

也许你是这个意思:

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)
}