2012-04-23 79 views
2

大家好,我用下面的方法來從NSNumber的數字格式

得到的字符串
 -(NSString *)stringFromNumber:(NSNumber *)number 
    { 
     NSLog(@"Input:---%@",number); 
     NSNumberFormatter *numFormatter = [[[NSNumberFormatter alloc] init] autorelease]; 
     [numFormatter setMaximumFractionDigits:5]; 
     [numFormatter setMinimumFractionDigits:2]; 
     //[numFormatter setExponentSymbol:@"e"]; 
     NSString *str_num = [numFormatter stringFromNumber:number]; 
     NSLog(@"Output:---%@",str_num); 
     return str_num; 
    } 

在控制檯我讓我喜歡下面

Input:---2.940000057220459 
    Output:---2.94     
    Input:---2940.000057220459 
    Output:---2940.00006   
    Input:---2.940000057220459e-15 
    Output:---.00     
    Input:---2.940000057220459e-12 
    Output:---.00     
    Input:---2.940000057220459e-09 
    Output:---.00     
    Input:---2.940000057220459e-06 
    Output:---.00     
    Input:---0.002940000057220459 
    Output:---.00294    

,但我需要的輸出看起來像下面的輸入高於(順序)

---2.94 
---2940 
---2.94e-15 
---2.94e-12 
---2.94e-6 
---2.94e-9 
---0.00294 

我會怎麼做呢?有人請幫助我。

+1

我認爲這應該這樣做 http://stackoverflow.com/questions/2215867/how-to -control-the-scientifc-style-of-nsnumberformatter – Chakalaka 2012-04-23 10:47:12

回答

1

我想這

-(NSString *)stringFromNumber:(NSNumber *)number 
{ 
    NSLog(@"Input:---%@",number); 
    NSNumberFormatter *numFormatter = [[NSNumberFormatter alloc] init]; 
    [numFormatter setMaximumFractionDigits:5]; 
    [numFormatter setMinimumFractionDigits:2]; 
    NSString *temp = [NSString stringWithFormat:@"%@",number]; 
    NSRange range = [temp rangeOfString:@"e"]; 
    if(range.length > 0){ 
     [numFormatter setNumberStyle:NSNumberFormatterScientificStyle]; 
     [numFormatter setExponentSymbol:@"e"]; 
    } 
    NSString *str_num = [numFormatter stringFromNumber:number]; 
    NSLog(@"Output:---%@",str_num); 
    return str_num; 
} 

,得到了這樣的

Input:---2.940000057220459 
Output:---2.94 
Input:---2940.000057220459 
Output:---2940.00006 
Input:---2.940000057220459e-15 
Output:---2.94e-15 
Input:---2.940000057220459e-12 
Output:---2.94e-12 
Input:---2.940000057220459e-09 
Output:---2.94e-9 
Input:---2.940000057220459e-06 
Output:---2.94e-6 
Input:---0.002940000057220459 
Output:---.00294 
+0

thanq非常多@bala – Narayana 2012-04-24 11:54:54

+0

直到它不適合我,但你的答案是非常好的。 – Narayana 2012-04-24 11:55:45

+0

秒的輸入已經得到了你想要的輸出?你注意到了嗎? – Bala 2012-04-24 11:56:05