を使って科学的な概念を有効にしたiOS電卓アプリを作っています
Label.text = [NSString stringWithFormat:@"%g",savedValue];
その形式は、たとえば1.09101e+120です。十分な表示スペースがあるので、より論理的にして、1.09101x10120として表示したいと思います。
これはどのように達成できますか?
を使って科学的な概念を有効にしたiOS電卓アプリを作っています
Label.text = [NSString stringWithFormat:@"%g",savedValue];
その形式は、たとえば1.09101e+120です。十分な表示スペースがあるので、より論理的にして、1.09101x10120として表示したいと思います。
これはどのように達成できますか?
私は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¹²⁰
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?