Подтвердить что ты не робот

Округлить десятичное значение с помощью javascript

Мне нужно округлить десятичное значение до десятичных знаков, используя javascript.

Ex,:

16.181 to 16.18
16.184 to 16.18
16.185 to 16.19
16.187 to 16.19

Я нашел несколько ответов, но большинство из них не округляют с 16.185 до 16.19.

4b9b3361

Ответ 1

(Math.round((16.185*Math.pow(10,2)).toFixed(1))/Math.pow(10,2)).toFixed(2);

Если ваше значение, например, 16.199, обычный раунд вернет 16.2... но с помощью этого метода вы тоже получите последнее 0, так что вы увидите 16.20! Но имейте в виду, что значение будет возвращено как строка. Если вы хотите использовать его для дальнейших операций, вам необходимо его разглядеть:)

А теперь как функция:

function trueRound(value, digits){
    return (Math.round((value*Math.pow(10,digits)).toFixed(digits-1))/Math.pow(10,digits)).toFixed(digits);
}

Ответ 2

Спасибо @ayk за ваш ответ, я изменил вашу функцию на это:

function trueRound(value, digits){
    return ((Math.round((value*Math.pow(10,digits)).toFixed(digits-1))/Math.pow(10,digits)).toFixed(digits)) * 1;
}

просто добавьте " * 1" потому что с твоим, как вы писали, 16.2 становится 16.20 и мне не нужен нуль в спине.

Ответ 3

Использование -

Decimal ds=new Decimal(##.##);
String value=ds.format(inputnumber);

Это будет отлично работать в моем случае, надеюсь, что он будет работать на 100%

Ответ 4

[EDIT] Этот код не работает для значения 18.185, так как 18.185 * Math.pow(10,2) оценивается до 1818.4999999999997

Math.round(<value> * Math.pow(10,<no_of_decimal_places>)) / Math.pow(10,<no_of_decimal_places>) ;

Пример: 1234.5678 → 2 десятичных знака → 1234.57

Math.round(1234.5678 * Math.pow(10,2)) / Math.pow(10,2) ; 

Ответ 5

function formatNumber(myNum, numOfDec) {
        var dec = Math.pow(10, numOfDec);
        return Math.round(myNum * dec + 0.1) / dec;
}

Ответ 6

Код, который вы используете для округления, верен. Но чтобы получить желаемый результат, удалите из кода .toFixed(numOfDec).

Функция:

function formatNumber (myNum, numOfDec) {

    var decimal = 1
    for (i = 1; i <= numOfDec; i++)
        decimal = decimal * 10 //The value of decimal determines the number of decimals to be rounded off with (.5) up rule 
    var myFormattedNum = Math.round(myNum * decimal) / decimal
    return (myFormattedNum)
}

Надеюсь, вам это поможет:)

Ответ 7

parseFloat(myNum.toFixed(numOfDec))

Ответ 8

Вы могли бы попробовать более простую функцию...

function roundOffTo(number, place) {
    return Math.round(number * place) / place;
}

Как это работает? Место может быть 10, 100, 1000, 10000 и так далее. Обратное значение будет 0,1, 0,01, 0,001 и т.д. Допустим, ваш номер 16.185, а ваше место 100. Первое, что он сделает, - умножит число на место, которое составляет 1618.5. Округление по Math.round приведет к 1619 году. Разделение по месту дает нам 16.19. Там. Кстати, не нужно беспокоиться о проблеме .5, она вроде как исправлена. Но на всякий случай измените Math.round (число * место) на Math.round (число * место + 0,1).