使用 parseFloat() 解析浮点数

Parse a floated number with 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-model,应该显示我的号码。

因此,当我单击以下键时:125.(点)和 3,我希望数字我输入的是125.3,但是有1253没有意义?我想,当我使用 parseFloat() 时,它也应该向我显示浮点数。怎么了?

'.' 一添加就被删除,因为 parseFloat('125.') === 125

维护两个变量。一个包含解析的结果,一个包含连接的字符串。始终解析连接的字符串:

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

作为@T.J。 Crowder 在评论中指出,这种方法意味着你应该 select '.',如果你再 select 后面的另一个数字,它就不会是 "forgotten"。