Как округлить только когда число заканчивается на девять в JavaScript? - PullRequest
0 голосов
/ 12 декабря 2018

Я хочу знать, есть ли способ округлить мое число, только когда оно заканчивается на nine?

Например, у меня есть 10.9, оно должно быть округлено до 11, но если яиметь 10.8, тогда оно не должно быть округлено.

Ответы [ 5 ]

0 голосов
/ 12 декабря 2018

У меня небольшая идея сделать это, используя JS Functions 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/

0 голосов
/ 12 декабря 2018

Самое короткое решение

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
0 голосов
/ 12 декабря 2018

Преобразовав его в строку временно, вы можете получить последний символ и проверить, является ли он 9:

const dontRoundUnlessEndsInNine = (num) => {
    return (String(num).substr(-1) === '9') ? Math.ceil(num) : num;
}
0 голосов
/ 12 декабря 2018

Вы можете проверить значение.

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
0 голосов
/ 12 декабря 2018
  1. Получить десятичную (основную) часть числа.
    • radix = number % 1.0
  2. Проверьте, находится ли radix между 0.9 и 1.0.
    • На самом деле используйте > 0.8999 вместо >= 0.9, поскольку 0.9 не имеет точного представления в IEEE-754.
    • Никогда не используйте == с числами с плавающей запятой, потому что они нене имеет точного представления.
  3. Если основание находится между диапазонами, округлите входное число, используя Math.ceil

Примерно так:

function roundUpIfDotNine( n ) {

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