我正在制作一个iOS计算器应用程序,其中使用
启用了科学概念Label.text = [NSString stringWithFormat:@"%g",savedValue];
其格式如下的 1.09101e + 120 即可。由于我有足够的展示空间,我想让它更符合逻辑,并将其显示为 1.09101x10 120 。
如何实现这一目标?
答案 0 :(得分:3)
您可能需要另一个标签。您需要将字符串拆分为两部分(搜索e +)。提取数字并将其放入另一个标签中。你必须自己做布局。
更简单,如果iPhone上的Helvetica或任何其他字体支持这些字符:⁰¹²³⁴⁵⁶⁷⁸⁹
(如Marcelo所述),您可以使用它们。但是你仍然要建立自己的自定义字符串,方法是将e +替换为x10,将120替换为所提到的字符。
答案 1 :(得分:1)
我无法提出一个Objective-C解决方案,但这里有一个用Python完成的灵感:
>>> import re
>>> s = '1.09101e+120'
>>> (mantissa, expsign, exp) = re.match('^(.*)[Ee]([-+]?)(\d+)', s).groups()
>>> super = u''.join( u'⁰¹²³⁴⁵⁶⁷⁸⁹'[int(d)] for d in exp )
>>> print mantissa + u'×10' + ('-' if expsign == '-' else '') + super
1.09101×10¹²⁰
答案 2 :(得分:0)
您可以使用CATextLayer和NSAttributedString(iOS 3.2及更高版本)。
NSDictionary * superScriptAttribute = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:1] forKey:kCTSuperscriptAttributeName];