Я пытаюсь округлить значение с точностью 2.
Вот фрагмент кода,
значение var = 250,445; var result = (значение) .toFixed (2);
результат содержит 250.44, после roundOff он должен хранить 250.45,
Я также пробовал это, набирая текст непосредственно в консоли Chrome. но по-прежнему показывает значение 250,44.
Заранее спасибо.
toFixed будет пол. не круглый. что на самом деле довольно хорошо. это не ошибка.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


function round(num,dec)
{
num = Math.round(num+'e'+dec)
return Number(num+'e-'+dec)
}
Usage:
alert(round(yourNumbber ,decimalsBehindYourNumber));example:
alert(round(2.453,1))
что означает округление 2,453 до 2,5
попробуй!
Хорошо, я постараюсь, спасибо за уделенное время
Я обновил свой ответ примером. Кроме того, вы можете отметить это как ответ, если этот код работает @ user2781186
привет @ user2781186, вы можете отметить это как ответ, если найдете это как решение
Ты можешь использовать:
Math.round(your var or number);
или же
Math.floor(your var or number);
$('#teste').html(Math.round(245.655) + " - Round")
$('#testefloor').html(Math.floor(245.655) + " - Floor")<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label id = "teste"></label><br>
<label id = "testefloor"></label>Дело в том, что tofixed () не всегда округляется правильно. Это уже было отмечено здесь, а также здесь.
Основная проблема заключается в том, что десятичное число 250,445 в двоичном формате, вероятно, немного меньше, что приводит к округлению результата. Для решения этой проблемы есть несколько самописных функций. E. g.
function toFixed( num, precision ) {
return (+(Math.round(+(num + 'e' + precision)) + 'e' + -precision)).toFixed(precision);
}
var value = 250.445; var result = (value).toFixed(2); result contains 250.44
250,44 - это абсолютно правильный результат, потому что в компьютере нет точного представления 250,445. При чтении 250,445 оно округляется до ближайшего возможного значения = 250,444999999999993 (64-битное с плавающей точкой). Округление этого числа на toFixed (2) дает 250,44.
кстати, 250.444999999999993 хранится внутри как 0x406f4e3d70a3d70a, а следующее более высокое значение - 0x406f4e3d70a3d70b == 250.445000000000022.
toFixed () работает правильно, но большинство людей не понимают проблематичность ограниченного представления чисел с плавающей запятой.
По первой ссылке: 239,575 хранится внутри как 239,574999999999989, а округление до 2 цифр составляет 239,57, а не 239,58. Если вы введете 239.5749999, все функции замены, определенные пользователем, работают неправильно.