NSNumberFormatter显示10 ^ n(10000 - > 10k)的自定义标签

时间:2010-04-27 08:49:08

标签: iphone objective-c cocoa cocoa-touch

我需要在绘图轴上显示数字。值可能会改变但我想避免太长的数字会破坏图形的可读性。 我的想法是将每3个字符分组并用K,M等替换它们(或自定义字符)。 所以: 1 - > 1, 999 - > 999, 1.000 - > 1K, 1.200 - > 1.2K, 1.280 - > 1.2K, 12.800 - > 12.8k, 999.999 - > 999.9k, 1.000.000 - > 1M, ...

请注意,我可能只需要格式化圆形数字(1,10,1000,1500,2000,10000,20000,30000,100000 ......)。 这可能与NSNumberFormatter有关吗?我看到它有一个setFormat方法,但我不知道它有多少可定制。

我正在使用NSNumberFormatter因为我使用的图形对象想要它设置标签格式,我想避免更改我的数据来设置标签。

2 个答案:

答案 0 :(得分:2)

您可以使用此代码:

let formatter = NSNumberFormatter()
formatter.multiplier = 0.001
formatter.positiveFormat = "#,###k"
formatter.zeroSymbol = "0"
return formatter

它帮助我转换了货币值:

2000 -> 2k
10000 -> 10k

答案 1 :(得分:0)

没有。你能得到的最接近的是科学记谱法。看一下here,了解如何为其创建格式。显然,你可以很容易地自己替换k,M等。