Для примера возьмем число 170844.29499999998. С помощью этой функции на js можно округлять числа с плавающей точкой:
function round(value, decimals) {
return Number(Math.round(value + 'e' + decimals) + 'e-' + decimals);
}
применив функцию:
round(170844.29499999998, 1)
170844.3
round(170844.29499999998, 2)
170844.29
round(170844.29499999998, 3)
170844.295
Если округлять на стороне C#:
Math.Round(170844.29499999998, 1, MidpointRounding.AwayFromZero)
170844,3
Math.Round(170844.29499999998, 2, MidpointRounding.AwayFromZero) <--??????
170844,3
Math.Round(170844.29499999998, 3, MidpointRounding.AwayFromZero)
170844,295
В коде происходят сравнения, поэтому мне нужно что бы результат при округлении был одинаков. Есть ли способ пофиксить это? Была идея делать так: Math.Round(number - 0.001, 2, MidpointRounding.AwayFromZero) либо так: round(number + 0.001, 2), но я не уверен, как это отразится на приложении.
Возможно, такой способ округления будет более правильным.
function round(value, decimals) {
let dec = Math.pow(10, decimals);
return Math.round(value * dec) / dec;
}
const n = 170844.29499999998;
console.log(round(n, 1));
console.log(round(n, 2));
console.log(round(n, 3));
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости