NSDecimalNumber添加丢失小数位

时间:2013-04-10 02:52:23

标签: objective-c nsdecimalnumber

我正在尝试制作计算器iphone应用程序而我的老师说我们必须使用NSDecimalNumber。我遇到了很多麻烦。我试图让它的附加部分正确,但我在将一个像1.24这样的数字添加到像33这样的整数时遇到了麻烦。当我希望它是34.24时,结果是34。有谁知道如何制作它以这种方式出来?以下是代码的相关部分

    -(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]; 
    }

1 个答案:

答案 0 :(得分:0)

实际上NSNumberFormatter无效NSDecimalNumber。它首先将所有内容转换为double

使用NSDecimalNumber时,请尝试使用自己的方法对其进行舍入,然后将其转换为NSString。使用NSNumberFormatter,您将失去精确度。