在计算器应用程序中更改科学记数法的格式

时间:2012-08-27 12:22:36

标签: objective-c ios xcode calculator

我正在制作一个iOS计算器应用程序,其中使用

启用了科学概念
Label.text = [NSString stringWithFormat:@"%g",savedValue];

其格式如下的 1.09101e + 120 即可。由于我有足够的展示空间,我想让它更符合逻辑,并将其显示为 1.09101x10 120
如何实现这一目标?

3 个答案:

答案 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)

您可以使用CATextLayerNSAttributedString(iOS 3.2及更高版本)。

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

查看Bold & Non-Bold Text In A Single UILabel?