Ios 将十进制转换为不同的基数

Ios 将十进制转换为不同的基数,ios,objective-c,arbitrary-precision,Ios,Objective C,Arbitrary Precision,我正在写一个程序来计算数字系统的转换。我的目标是让程序在短时间内计算出非常大的数字(为什么不转换成一个N十进制数,然后做你的数学题呢?你很有可能正在尝试对一个像1.333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333

我正在写一个程序来计算数字系统的转换。我的目标是让程序在短时间内计算出非常大的数字(为什么不转换成一个N十进制数,然后做你的数学题呢?你很有可能正在尝试对一个像1.33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 EXEC_BAD_access谢谢你的回复。你是说
compare:options:
方法将首先导致错误,但不是NSDecimalNumber首先达到其上限?我担心你会接受一个浮点数,并以一个无限字符串结束。但你不应该这样做……这个算法不会uld似乎只对整数起作用。除此之外,我还担心将中间值转换为字符串。这很奇怪。我的意思是NSDecimalNumber可能会使用几个字节来准确表示4/3,但字符串将无限大,这取决于stringByDividedByString方法是否允许floating点值。这不应该,对于这个算法。很抱歉,我没有提到我目前只处理整数,转换浮点是关于一个不同的算法(我想),但我稍后也会处理转换浮点数的问题(在我修复这个问题之后),再次感谢您的回复。
- (NSString *)decimalToBase:(int)baseOfNewNumber
{
    NSString *quotient, *remainder, *result;

    result = @"";
    quotient = number;

    if (number != 0 && baseOfNewNumber != 10) {

        for (int count = 0; [quotient compare:[NSString stringWithFormat:@"%i", baseOfNewNumber] options:NSNumericSearch] == (NSOrderedDescending|NSOrderedSame); count++) {
            remainder = [quotient stringByModuloByString:[NSString stringWithFormat:@"%i", baseOfNewNumber]];
            quotient = [quotient stringByDividedByString:[NSString stringWithFormat:@"%i", baseOfNewNumber]];
            result = [remainder stringByAppendingString:result];
        }
        result = [[quotient stringByModuloByString:[NSString stringWithFormat:@"%i", baseOfNewNumber]] stringByAppendingString:result];
        return result;
    } else {
        return number;
    }
}