Это потому, что фильтр number
в AngularJS удаляет десятичную дробь, когда предоставленный аргумент fractionSize
равен нулю.
Вы можете подтвердить это сами:
<!-- 2 -->
{{ 2. | number:0 }}
Чтобы обойти это, просто примените фильтр number
условно:
elem.val(fractionSize ? $filter(attrs.formatter)(plainNumber, fractionSize) : plainNumber);