Десятичные числа представляют десятичные значения фиксированной точности. Литеральное значение 0.50M
имеет встроенную точность с точностью до 2 знаков после запятой, поэтому создаваемая десятичная переменная помнит, что это значение в 2 десятичных знака. Поведение полностью по дизайну.
Сравнение значений - это точная проверка численного равенства на значениях, поэтому здесь конечные нули не влияют на результат.
Если я правильно понимаю, тебе нужно что-то подобное? https://stackblitz.com/edit/angularjs-52l5k7
Если вы хотите повторно использовать вашу модель ng, вам следует использовать ng-bind для привязки данных. https://docs.angularjs.org/api/ng/directive/ngBind
Есть небольшие изменения в HTML. Вы можете сослаться JsFiddle
<div ng-app="selectExample" ng-controller="ExampleController">
<select ng-model="register.regData.branch" ng-options ="chapter.chapter_name for chapter in register.bloodbankchapters" ng-change="register.regData.branch_name=register.regData.branch.chapter_name">
<option ng-repeat="chapter in register.bloodbankchapters" >{{chapter.chapter_name}}</option>
</select>
<div>{{register.regData.branch.chapter_name}}</div>
<input type="text" ng-model="register.regData.branch_name" name="branch_name">
</div>