2016-03-14 2 views
0

У меня возникла проблема при выполнении вычисления с помощью javascript. Как вы можете видеть на скрипке, ответ появляется округленным без десятичных знаков, и я не понимаю, почему.angularJS и JavaScript Math decimals issue

Что мне нужно сделать, чтобы показать десятичные знаки $ scope.total?

var moment = angular.module('moment',[]); 
 
moment.controller('momentCtrl', ['$scope', function($scope) { 
 
    
 
    
 
    $scope.val1 = 96; 
 
    
 
    $scope.val2 = 18; 
 
    
 
    $scope.val3 = Math.PI; 
 
    
 
    $scope.val4 = 13.5; 
 
    
 

 
$scope.total = parseInt($scope.val1) + parseInt($scope.val2) - parseInt($scope.val3) - parseInt($scope.val4); 
 
    
 
    
 
    
 
    
 
    }]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<div ng-app="moment" ng-controller="momentCtrl"> 
 
Value = {{total}} <br> 
 
Should be something like 97.3584 
 
    </div>

+0

Вы используете 'parseInt' ... – elclanrs

+0

Почему вы используете' parseInt' в любом случае? –

+0

Непонятно, почему вы используете 'parseInt' в своих расчетах. Это все цифры. – ryanyuyu

ответ

2

Вы используете parseInt(), который удаляет десятичный, и так как ваши переменные сферы применения все уже число, это на самом деле не способствует ничего. Если вы пытаетесь убедиться, что входы являются номерами, вы можете использовать parseFloat().

Для раннего подтверждения ввода в HTML5 вы можете использовать <input type="number">. Он останавливает пользователя от попыток ввести не-число, что является хорошим ранним уловом (хотя вы можете хотите, чтобы разрешить недопустимые входы, поскольку вы можете использовать JS для разумного решения, как уведомить пользователя о том, что не так).

+0

@ryanyuyu Отличное предложение –

+0

Поскольку вы включили мой комментарий в свой ответ (скорее, я должен сказать), я удаляю теперь устаревший комментарий. Я также сделал несколько косметических исправлений для вашего ответа. Я тоже удалю этот комментарий за несколько минут. – ryanyuyu