Округление до ближайшего 0,5, а не 0,0

#javascript #math

#javascript #математика

Вопрос:

Как вы можете найти ближайшее значение nb.5?

Исключая значения .0,

Пример,

 round(1.0) = 1.5
round(1.99) = 1.5
round(2.0) = 2.5
  

Комментарии:

1. Просто любопытно, что насчет round(-1) ?

2. Должно следовать той же логике, -0.01 = -0.5, -0.99 = -0.5, -1.00 = -1.5, — и т.д. 🙂

Ответ №1:

Вы могли бы добавить 0.5 к значению, возвращаемому Math.floor() :

 const round = (number) => Math.floor(number)   0.5

console.log(round(1.0))
console.log(round(1.99))
console.log(round(2.0))  

Комментарии:

1. Блестяще, спасибо, я полностью избежал этого.. Я не уверен, какой ответ пришел первым, но ваш кажется наиболее сложным, примет, когда мне будет разрешено.

2. @user2267175 Я ответил на 10 секунд раньше, потому что IEatBagels был занят поеданием рогаликов

3. @adiga Похоже, это будет моим падением

Ответ №2:

Math.floor(value) 0.5 должно сделать это.

Кроме того, вам следует уточнить свои спецификации… Поскольку ближайшее значение 0,5 из 2 равно 1,5 И 2,5, они оба находятся на одинаковом «расстоянии».

Я понимаю, что ваш пример касается этого сценария, переходя к ближайшему верхнему значению 0,5, но действительно ли это то, что вы хотите?

Ответ №3:

 function round(num) {
    return Math.round((num % 10))   0.5
}

console.log(round(1));
console.log(round(1.99));
console.log(round(2));  

Ответ №4:

Для достижения ожидаемого результата используйте приведенную ниже опцию, используя Math.trunc —https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc

 let round = (val) => Math.trunc(val)   0.5
console.log(round(1.99))
console.log(round(1))
console.log(round(2))