На данный вопрос уже ответили:
В ходе вычислений результат иной раз получается с большим количеством знаков после точки (большая десятичная часть).
Интересует алгоритм округления таких чисел по следующим критериям:
Есть некоторое число, характеризующее максимально допустимое количество знаков в десятичной части числа n, равное 4
Тогда при получении числа 1.6547835 - можно поступить просто 1.6547835.toFixed(n) - получим 1.6548.
Все хорошо. Но если в ходе вычислений получилось целое число, то такой прием даст на выходе 1.0000, что не очень хорошо.
Далее допустим получилось число 4.00000000005, вышеприведенный способ даст 4.0000, а хотелось бы 4.
В общем нужен алгоритм который будет округлять следующим образом:
6.400000000000002 // 6.4
1.0000000000000004 // 1
5.3424505674 // 5.3425
5 // 5
6.4560000006 // 6.456
Я не прошу готовых ответов, формул и функций, направьте ход моих мыслей в нужное русло.
Можно поизвращаться и сделать так))
test(6.400000000000002); // 6.4
test(1.0000000000000004); // 1
test(5.3424505674); // 5.3425
test(5); // 5
test(6.4560000006); // 6.456
function myround(n, d) {
var digits = +"1".padEnd(d, "0");
return Math.round(n * digits) / digits;
}
function test(n) {
console.log(myround(n, 5));
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей