2012-02-10 59 views
0

我有这样一个NSNumber例如= 1978,我想将其转换为:1K9,seconde例如:35700转换为:35K7(其中“k”是公里,“M”是米,我怎么能做到这一点NSNumber和十进制值

感谢

+0

你在哪里写了你的例子中的任何“M”? – 2012-02-10 14:05:46

+0

例如我有:1790M(米),我想将它转换为这样的公里:1K7,另一个示例:34567M我想要:34K5谢谢 – samir 2012-02-10 14:09:18

回答

1

基本上可以使用内部号码的数据。 假设你在基于计值,那么您可能想是这样的:

NSNumber *sourceValue = ... // your NSNumber value from any source 
int meters = sourceValue.intValue; 
int km = floor(meters/1000);   // only your kilometers 
int sub_km = meters % 1000;    // only the part behind the kilometers 
int first_sub_km = floor(sum_km/100); // the first digit of the subrange 
NSString *readable = [NSString stringWithFormat:@"%iK%i", km, first_sub_km]; 

首先,拆分米,进入< = 1000> 1000 那你只好把那出格式化,K之间。

2
int temp; 
    NSNumber *yourNumber;//the number you enter from some where 
    NSString *newValue; 

    if([yourNumber intValue]>1000){ 
     temp = [yourNumber intValue] % 1000 ;//your number module 1000 
     newValue= [[temp stringValue]stringByAppendingString:@"K"]; 

    } 

注:我没有我的Mac和我在一起,如果[temp stringValue]提供任何worning &错误,请通知我

+0

这不是确切的答案,您应该添加其余的您的号码以相同的方式与字符串相关联。 – 2012-02-10 14:05:17

0

自己写的NSNumberFormatter的子类。在这个子类中你可以实现计算逻辑。

逻辑可能看起来像这样。

  1. Devide由thousend值,并添加你的“K”
  2. ,如果你想有上百第一位获得你的价值的thired最后一位数字
  3. 返回新的字符串
2

方法如下:

NSNumber *initialNumber = [NSNumber numberWithInt:35700]; 
NSString *resultString = [NSString stringWithFormat:@"%iK%i", floor(initialNumber/1000), floor((initialNumber % 1000)/100)];