2013-04-10 58 views
0

我想做一個計算器iPhone應用程序,我的老師說我們必須使用NSDecimalNumber。我遇到了很多麻煩。我試圖讓它的部分是正確的,但是當像33這樣的整數中加1.24這樣的數字時,我遇到了麻煩。當我希望它是34.24時,結果是34。有誰知道如何使它出現這種方式?這裏是代碼的相關部分NSDecimalNumber除了丟失小數位

-(void)outputNumber: (NSDecimalNumber*) number 
{ 
    //used to format number of decimal places 
    NSNumberFormatter* formatter = [[[NSNumberFormatter alloc] init] autorelease]; 
    [formatter setMaximumFractionDigits:self.afterDecimal]; 

    //output the number to calculator 
    NSString* formatNumber = [formatter stringFromNumber:[NSNumber numberWithDouble:[number doubleValue]]]; 
    self.inputLabel.text = [NSString stringWithFormat: @"%@", formatNumber]; 

    if (self.isWaiting == TRUE) { 
     self.numberB = number; 
     //change button title default color 
     [self.myButton setTitleColor:[UIColor colorWithRed:.196 green: .3098 blue: .52 alpha: 1] forState: 0]; 
    } 
    else { 
     self.numberA = number; 
    } 
} 
if (self.binaryTag == 6) { 
     self.numberC = [self.numberB decimalNumberByAdding: self.numberA]; 
    } 
+0

你確定self.numberC是NSDecimal? – 2013-04-10 03:05:44

+0

它是NSDecimalNumber ...我現在看到問題了...它是setMaximumFractionDigits,是否有更好的方法來獲取小數點後的所有數字? – user2264210 2013-04-10 03:56:30

回答

0

其實NSNumberFormatter不正確地NSDecimalNumber工作。它首先將所有東西都轉換成double

使用NSDecimalNumber時,請嘗試使用自己的方法對其進行舍入,然後將其轉換爲NSString。隨着NSNumberFormatter你只會失去精度。

+0

是啊,我試圖使用NSDecimalNumberHandler,但它沒有工作出於某種原因。 – user2264210 2013-04-10 17:58:24