2016-07-08 70 views
0

你好我有如下代碼:解析與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重複建設像這樣的計算器:

<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,我希望在我輸入數字125.3,但1253沒有意義呢?我想,當我使用parseFloat()它應該顯示我floatet數字。怎麼了?

+1

'125.'被解析爲125,然後連接3到它 – mplungjan

+3

'。'一旦被追加,就會被拋棄,如'parseFloat('125。')=== 125'。 – sdgluck

+3

如果使用Stack Snippets('<>'工具欄按鈕)在問題中放置可運行[mcve],則可以獲得更完整的準確幫助。 –

回答

1

'.'一旦被追加就會被丟棄,如parseFloat('125.') === 125

保持兩個變量。一個包含解析結果,另一個包含連接字符串。始終解析連接字符串:

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

As @ T.J。 Crowder在評論中指出,這種方法意味着如果您選擇'.',那麼如果您之後選擇另一個數字,它將不會被「遺忘」。

+0

第一行幫助不是第二行。那就是當你點擊'.'時,它解析回.......!你知道的。 – Jai

+2

@Jai:他的觀點是,通過分開維護字符串,您不會失去「。」被點擊的事實。他是對的。 –

+0

@ T.J.Crowder雙手豎起大拇指。 – Jai