使用NSNumberFormatter格式化字符串

时间:2017-07-06 18:23:17

标签: ios cocoa nsnumberformatter

我有我的这个应用程序,其中一个文本字段必须像计算器显示一样。此文本字段显示的数字由函数计算。例如,如果数字是" 3.21"它应该像这样显示,有2位小数。如果数字有更多的小数位,则应显示它具有的小数位数。

文本字段允许显示10位数字。

如果数字大于9999999999(10个9),则应以科学计数法显示,例如" 4.767 E20"或类似的东西。

我想我必须使用NSNumberFormatter来解决这个问题,但我发现我会有一系列ifs和一个复杂的NSNumberFormatter s序列来完成这项工作,特别是对于小数地方。

我的问题是:这是要走的路还是某种NSNumberFormatter可以自动执行此操作?

1 个答案:

答案 0 :(得分:2)

您根本不需要使用数字格式化程序。您可以使用Swift或Objective-C中的%g格式字符串。 Swift代码如下所示:

import UIKit
var value = 0.0
for digits in 1...12 {
  value = value * 10 + 9
  print(String(format:"%.10g", value))
}

产生结果:

9
99
999
9999
99999
999999
9999999
99999999
999999999
9999999999
1e+11
1e+12

在Objective-C中,您使用NSString的{​​{1}}方法,并使用格式字符串@“%。10g”

我的Objective-C正在生锈,但代码看起来像这样:

stringWithFormat