如何在javascript中向上舍入并保持小数点后的位数

时间:2017-10-15 09:25:37

标签: javascript math numbers rounding

如果.950显示.950 如果.954显示.955 如果.956显示.960

如果千分之一的价值在.001和.004之间,那么向上舍入到.005

如果数千位在.006和.009之间,则转到.010并且不会降低零。

2 个答案:

答案 0 :(得分:1)

残酷:

function formatValue(value) {
    var tempVal = Math.trunc(value * 1000);
    var lastValue = (tempVal % 10);

    if (lastValue > 0 && lastValue <= 5) lastValue = 5;
    else if (lastValue > 5 && lastValue <= 9) lastValue = 10;
    else lastValue = 0;

    return parseFloat((Math.trunc(tempVal / 10) * 10 + lastValue) / 1000).toFixed(3);
}

formatValue(3.656); // -> "3.660"
formatValue(3.659); // -> "3.660"
formatValue(3.660); // -> "3.660"
formatValue(3.661); // -> "3.665"
formatValue(3.664); // -> "3.665"
formatValue(3.665); // -> "3.665"

注意:函数返回一个字符串(.toFixed返回一个字符串)..(但是固定的十进制长度在数字中没有任何意义)

答案 1 :(得分:1)

舍入到一定数量的小数是通过将该值乘以所需的小数位数到整数范围,然后除去剩余的小数,然后除以相同的乘数使其再次成为小数来完成的。 /> 四舍五入到&#34;半小数&#34;你想要的是通过加倍乘数(2X而不是1X)来实现 + 0.005是根据需要将其舍入,否则它将始终向下舍入 toFixed()用于使值的字符串表示具有根据需要用零填充的小数部分。

&#13;
&#13;
function formatValue(value) { 
  return (Math.floor((value + 0.005) * 200) / 200).toFixed(3);
}

console.log(formatValue(1.950));
console.log(formatValue(1.954));
console.log(formatValue(1.956));
console.log(formatValue(1.003));
console.log(formatValue(1.007));
&#13;
&#13;
&#13;

相关问题