NSNumber和十进制值

时间:2012-02-10 13:44:44

标签: objective-c

我有一个像这样的NSNumber例如= 1978,我想转换为:1K9,seconde示例:35700转换为:35K7(其中“k”是公里,“M”是米,我怎么做此

感谢

4 个答案:

答案 0 :(得分: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]给出了任何问题和错误,请通知我。

答案 1 :(得分:2)

以下是:

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

答案 2 :(得分: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.

答案 3 :(得分:0)

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

逻辑可能如下所示。

  1. 通过thousend设置值并添加“k”
  2. 如果你想让数百的第一位数字得到你价值的最后一位数
  3. 返回新字符串