2013-04-10 63 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