我需要将一个数字舍入到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
答案 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;
答案 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