2016-08-17 3 views
-2

Есть ли способ округлить число, т.е. если его 2.3 и выше он должен оставаться равным 2, но если оно больше 2.9, оно должно округлить до 3. Не знаю, как бы я их сделал работа с Math.round, так как это всегда делает ее равной 3 после 2.4. Благодарю.Округление до 0,9 в javascript

+1

Больше, чем 2,9 или больше или больше или равен 2,9? Кроме того, я сомневаюсь, что раунды Math.round от 2.41 до 3. – Bathsheba

+0

Больше, чем 2.9, должно стать равным 3, но если оно меньше 2 – aditya063

+1

Вы можете создать пользовательскую функцию, которая может реализовать эту логику, а вместо Math.round u can вызовите эту функцию. function customRound (a) {if (a * 10% 10> = 3 && a * 10% 10 <= 9) {return a - (a% 10); } else {return a + (10 - a% 10); }}; – g9m29

ответ

3

Один из способов, чтобы добавить смещение сместить округление «стержень» от 0,5 до 0,9. Если x это число округлить затем использовать

Math.round(x - 0.4)

+0

@Downvoter (s): мне нужен кофе? Какое требование это не удовлетворяет? (У меня была опечатка в первом черновике.) – Bathsheba

+0

Это правильный ответ, не знаю, почему есть downvoter (s). Нет необходимости использовать пользовательскую функцию round, как показано в других ответах, но ее достаточно, как в вашем ответе. – Legionar

+1

Вы уже знаете, что сделали опечатку, которая сделала код неправильным. Теперь, когда вы установили опечатку, пониженные голоса были отменены. Система работает. – JJJ

0

вы могли бы иметь вспомогательный метод, как показано ниже

function Extended_Roundoff(num, decimal_threshold){ 
    var decimal_part = num - Math.floor(num); 
    if(decimal_part >= decimal_threshold){ 
    return Math.ceil(num); 
    }else{ 
    return Math.floor(num); 
    } 
} 

console.log(Extended_Roundoff(2.3, 0.9)); 
console.log(Extended_Roundoff(2.95, 0.9)); 
-1

Не совсем поймать первое условие: (?), Если 2,3 и больше он должен вернуть 2.

Так здесь есть функция , что округляет числа с фракцией> 0,9

function customRound(number){ 
    return (number-(~~number))>0.9 ? ~~number+1 : ~~number; 
} 
+0

, если он меньше 2.9, тогда он должен округлить до 2, а если 2.9 или больше, это должно стать 3. Спасибо – aditya063

+0

что должно стать 7.9? –

+0

И почему downvotes? Рабочий ответ ... –

1
function customRound(v) { 
    return Math.round(v-0.4); 
}; 

если v велико меньше X.9, я т возвращает е

customRound(2.1) // 2 
customRound(2.8) // 2 
customRound(2.89) // 2 

еще, если v является большим, чем X.9, он retuans х +-

customRound(2.91) // 3 

И вы можете пользовательское смещение, как вам нравится.

+0

UV'd. По существу мой ответ, но с некоторыми объяснениями. (Хотя лично я не стал бы обертывать отдельную функцию - для меня поведение «Math.round (v - 0.4)» более очевидно на сайте вызова, чем «customRound (v))» – Bathsheba

0

Это вернет 24 и если Num 23,6 вернется 23

var num = 23.9; 
var nr = num % Math.floor(num) 
nr = Math.round(nr * 100)/100 
if(nr >=0.9){ 
    num = Math.floor(num+1); 
}else{ 
    num = Math.floor(num); 
} 
alert(num); 
Смежные вопросы