Lodash имеет несколько методов полезности Math, которые могут round , floor и ceil число до заданной десятичной точности. Это исключает конечные нули.
Они занимают интересный подход, используя показатель числа. По-видимому, это исключает проблемы округления.
(Примечание: func
- Math.round
или ceil
или floor
в коде ниже)
// Shift with exponential notation to avoid floating-point issues.
var pair = (toString(number) + 'e').split('e'),
value = func(pair[0] + 'e' + (+pair[1] + precision));
pair = (toString(value) + 'e').split('e');
return +(pair[0] + 'e' + (+pair[1] - precision));