【问题标题】:number incrementing in Angular.jsAngular.js 中的数字递增
【发布时间】:2023-03-15 20:28:01
【问题描述】:

我正在尝试构建一个计算销售指标的应用。我在构建中遇到了一个不寻常的问题。

应用程序的一部分允许用户将变量增加/减少 5%,然后查看这将如何影响整体指标。它还允许用户查看增加/减少的百分比。

我的功能大致按预期工作,但是如果我在输入中输入一个小于 20 的数字,然后尝试使用我的递增函数增加它,它只会增加一次然后停止。

如果我输入的数字是 20 或更大,它会以预期的方式递增。

下面是我的角码:

function controller ($scope) {
    $scope.firstNumber = 0;
    $scope.firstPercent = 0;

    $scope.increase = function(id) {

        var A = parseInt(id);
        var B = A * 5/100;    
        var C = 0;

        var C = A + B;

        if (id === $scope.firstNumber) {
            $scope.firstNumber = C;
            $scope.firstPercent = $scope.firstPercent + 5;
        } 
    };

    $scope.decrease = function(id) {

        var A = parseInt(id);
        var B = A * 5/100;    
        var C = 0;

        var C = A - B;

        if (id === $scope.firstNumber) {
            $scope.firstNumber = C;
            $scope.firstPercent = $scope.firstPercent - 5;
        } 
    };

我看不出我的数学有什么问题,我的想法是我可能以错误的方式接近角度。不过我不确定。

我已经整理了一个显示完整代码的小提琴。

jsFiddle

【问题讨论】:

标签: javascript angularjs increment


【解决方案1】:

我已更新小提琴以使用 parseFloat。现在好像数字在增加。

var A = parseFloat(id);

http://jsfiddle.net/kjDx7/1/

它使用高于 20 的值的原因是它每次尝试增加时只是读取小数点前的部分。所以 20 变成了 21 和 22.05 等等。只要小数点前的值不断变化,它就会显示不同(但不正确)的答案。

另一方面,10 变成了 10.5,解析后得到 10。如您所见,这个循环无休止地继续。

【讨论】:

  • 谢谢一百万,你们太棒了
【解决方案2】:

您遇到这个问题的原因是因为小于或等于 20 的任何事物中有 5% 小于或等于 1。

当你parseInt() 值时,你总是会再次得到相同的数字。

以 15 为例。

15 的 5% = 15.75

parseInt() 之后,你又得到了 15 的值。

您每次都使用相同的值来递增/递减。

因此对于低于 20 的值,您不会得到任何更改。

正如@Akash 建议的那样,请改用parseFloat() - 或者当你得到的值是浮动的时候为什么还要这样做

【讨论】:

    【解决方案3】:

    我为你的小提琴做了一个叉子。我不完全确定你想要达到什么目标。

    参加look at this fiddle

     $scope.increase = function() {
    
        $scope.firstPercent = $scope.firstPercent + 5;
    
        var A = $scope.firstNumber;
        var B = (A / 100) * $scope.firstPercent;
        var C = A + B;
    
        $scope.firstNumberWithPercent = C;
    };
    

    更新

    发布后,我看到该问题已得到解答。但这真的是你想要的吗?当您点击增加时,输入字段中的数字会减少 5%。没关系,但是当您在那之后点击减少时,同一字段中的数字会减少 5%。所以你的出发点是不同的。

    100 + 5/100 = 105
    105 - 5/105 = 99,75

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-30
      • 1970-01-01
      相关资源
      最近更新 更多