2011-03-27 49 views
2

我是noob感覺心痛,想放棄。我們只是說我想添加1,302.22和「.22」部分,不顯示。我添加的下一個貨幣「44.55」和五十五美分不會出現。如何解決這個問題,而不讓我頭疼「.00」?如何計算貨幣值,如果「美分」部分不顯示?


double currency = [Amount1.text doubleValue] + [Amount2.text doubleValue]; 
NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease]; 
[numberFormatter setNumberStyle: NSNumberFormatterCurrencyStyle]; 
NSString *numberAsString = [numberFormatter stringFromNumber:[NSNumber numberWithInt:currency]]; 
Currency.text = [NSString stringWithFormat:@"%@",numberAsString]; 

回答

3

我懷疑問題就出在這裏:

NSString *numberAsString = [numberFormatter stringFromNumber:[NSNumber numberWithInt:currency]]; 

[NSNumber的numberWithInt:貨幣]創建一個NSNumber的對象,從一個整數值。您傳遞的整數值是currency。但是,貨幣的類型是雙倍的。

想一想double的簡單方法就是想一個有小數點的數字。想一想integer的簡單方法就是想一個沒有小數點的數字。您可以通過添加或刪除小數點在概念上在兩者之間進行轉換。

由於您將雙精度值傳遞給期望值和整數的方法,因此會得到截斷。

例如:當您將其轉換爲int時,雙1035.55將變爲1035

嘗試更改numberWithIntnumberWithDouble並查看您是否有更好的運氣。

另外,不要放棄。我們都在那裏:d

1

您可以凝聚的代碼頗有幾分:

double currency = [Amount1.text doubleValue] + [Amount2.text doubleValue]; 
Currency.text = [NSString stringWithFormat:@"%f", currency]; 

不要放棄,你會到達那裏:)