0

を使って科学的な概念を有効にしたiOS電卓アプリを作っています

Label.text = [NSString stringWithFormat:@"%g",savedValue];

その形式は、たとえば1.09101e+120です。十分な表示スペースがあるので、より論理的にして、1.09101x10120として表示したいと思います。
これはどのように達成できますか?

4

3 に答える 3

3
于 2012-08-27T12:43:15.390 に答える
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¹²⁰
于 2012-08-27T13:05:48.133 に答える
0

You can use Use a CATextLayer with an NSAttributedString(iOS 3.2 and above).

NSDictionary * superScriptAttribute = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:1] forKey:kCTSuperscriptAttributeName];  

Take a look at Bold & Non-Bold Text In A Single UILabel?

于 2012-08-27T13:31:22.637 に答える