使用parseFloat()解析一个浮动数字

时间:2016-07-08 09:53:09

标签: jquery html angularjs parsefloat

您好,我有以下代码:

keys = [
    { label: '1', key: '1' },
    { label: '2', key: '2' },
    { label: '3', key: '3' },
    { label: '4', key: '4' },
    { label: '5', key: '5' },
    { label: '6', key: '6' },
    { label: '7', key: '7' },
    { label: '8', key: '8' },
    { label: '9', key: '9' },
    { label: 'C', key: 'Delete' },
    { label: '0', key: '0' },
    { label: '.', key: '.' }
];

我在ng-repeat中循环我的键来构建像这样的计算器:

<div class="cKeys">
    <div class="cKey" ng-repeat="item in ctrl.keys" ng-click="ctrl.modifyValue(item)">{{item.label}}</div>
</div>

当我点击一个键时,我调用一个单击对象作为参数的函数。

modifyValue(obj: any) {
    let str = this.currentValue + obj.key;
    this.currentValue = parseFloat(str);
}

在这个函数中,我构建一个字符串并用parseFloat()解析它以得到一个数字。 this.currentValue是输入的ng模型,应显示我的数字。

因此,当我点击关键点:125.(点)和3时,我希望数字为{{ 1}}在我的输入中,但有125.3没有意义?我想,当我使用1253时,它应该向我展示浮动数字。怎么了?

1 个答案:

答案 0 :(得分:1)

'.'一旦被追加就会被删除,parseFloat('125.') === 125

保持两个变量。一个包含已解析的结果,另一个包含连接的字符串。始终解析连接的字符串:

modifyValue(obj: any) {
    this.concatStr += obj.key;
    this.currentValue = parseFloat(this.concatStr);
}

作为@ T.J。克劳德在评论中指出,这种方法意味着如果您选择'.',如果您之后选择另一个数字,它将不会被“遗忘”。