如何仅在JavaScript中以9结尾的数字四舍五入?

时间:2018-12-12 18:35:36

标签: javascript rounding

我想知道是否只有在数字以nine结尾时才可以四舍五入吗?

例如,我有10.9,应四舍五入为11,但如果我有10.8,则不应四舍五入。

5 个答案:

答案 0 :(得分:1)

  1. 获取数字的小数(基数)部分。
    • radix = number % 1.0
  2. 检查radix是否在0.91.0之间。
    • 实际上使用> 0.8999代替>= 0.9,因为0.9在IEEE-754中没有确切的表示形式。
    • 切勿将==与浮点数一起使用,因为它们没有确切的表示形式。
  3. 如果基数在范围之间,请使用Math.ceil
  4. 向上舍入输入数字

像这样:

function roundUpIfDotNine( n ) {

    var radix = n % 1.0;
    if( radix > 0.899 && radix < 1.0 ) {
        return Math.ceil( n );
    }
    else {
        return n;
    }
}

答案 1 :(得分:1)

您可以检查值。

function round(v) {
    return Math.floor(v + 0.1) === v + 0.1
        ? v + 0.1
        : v;
}

console.log(round(10.9)); // 11
console.log(round(10.8)); // 10.8

答案 2 :(得分:0)

通过临时将其转换为字符串,您可以获取最后一个字符并检查它是否为9:

const dontRoundUnlessEndsInNine = (num) => {
    return (String(num).substr(-1) === '9') ? Math.ceil(num) : num;
}

答案 3 :(得分:0)

最短的解决方案

function round(v)
{
    return(''+v).slice(-1) == 9 ? v + 0.1 : v;
}

console.log(round(10.9)); // 11
console.log(round(10.8)); // 10.8

答案 4 :(得分:0)

我不知道通过使用JS函数来做到这一点 AS如下:

function qwerty() {

  var number = 11.9;
  var numberStringArr =  number.toString().split(".");

  if(numberStringArr[1] == 9) { // if condition is true, it will add 1
    var num = number + 1;
    var numberStringArr = num.toString().split(".")
    alert(numberStringArr[0]);
  } else {
    alert("No Change");
  }
}
qwerty();

已为JSFiddle提供了链接 https://jsfiddle.net/2002utewari/0xjh7fp1/