我一直在研究计算器,我想实现从十进制到八进制以及从十进制到十六进制的转换。我是 Xcode 和 Objective C 的新手,但我设法将十进制转换为八进制,它似乎不适用于十六进制。
这是我编写的将双精度转换为八进制的代码:
double result = 0;
...
double decToOct = [self popOperand];
NSString *oct = [NSString stringWithFormat:@"%llo", (long long)decToOct];
result = [oct doubleValue];
使用相同的方案(显然包括@"%llo"
用更改@"%llx"
)到十六进制的转换工作到某个点。它从 0 到 9 的数字很好,但一旦达到 10,它就会显示为 0。为了测试,我还输入了 5395,它显示了 1513,即所需的结果。
因此,我只能假设由于某种原因我的代码不想输入十六进制值的实际字母(例如,11 将转换为 B,但它显示为 0)。
有什么建议么?提前致谢。
更新:
此外,我也一直在使用它来显示result
:
double result = [self.brain performOperation:operation];
self.display.text = [NSString stringWithFormat:@"%g", result];
result
,从顶部开始列出,是一个最终在此处返回到的参数self.brain performOperation:operation
。这应该处理所有操作的显示,包括:加法、乘法等,还有八进制和十六进制。同样,它适用于八进制,但不适用于十六进制。