2012-01-06 87 views
0

我必须确定零开始削减数字的时间段以及''后面的5个数字。如何显示最多5位数的浮点数?

我用下面的代码:

NSString* result = [[NSString stringWithFormat: @"%.5f", CGFloat] stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString: @"0"]]; 

当我使用它,例如与“3.50300000”它给了我“3.503”,这是很正常

但是当我使用的代码“0.50300000”它当需要'0.503'时给我'.503'。

有没有人可以帮助我?

+1

怎么是'3.50300' - >'3.503' *没关系*当你 “ '' 要5个号码* *后的”?也就是说,第二种情况有什么问题? '0.503'会好吗?或者应该输出为“3.50300”和“.50300”? – 2012-01-06 21:02:54

+0

抱歉,我想要最大。 5号 – user1126444 2012-01-06 21:04:17

+0

“cut”一词在数字中的含义是什么? – Gabe 2012-01-06 21:05:14

回答

2
NSString *result = [NSString stringWithFormat:@"%.5f", myFloat]; 
for (int i = result.length; [result characterAtIndex:i - 1] == '0'; --i) 
    ; 
result = [result substringToIndex:i]; 
+0

这太可怕了。请不要在你的代码中这样做字符串格式。一个简单的字符串格式“@”%06.4f“'作为@dasblinkenlight表明是正确的方式,你知道,格式化字符串。 – memmons 2012-10-10 18:24:31

+0

@Answerbot提问者明确表示他想修剪尾部零。你的格式字符串不会这样做。 – 2012-10-10 20:38:11

1

它是%N.Mf,其中N是字段的最小宽度,M是“。”后面的小数位数。如果您始终希望小数点前至少有一位数字(可能为“0”),并且指定%5.3f后需要3位数字。

请注意,使用标准的%格式化,将显示限制为只有5位数字是没有办法的,例如12.12345会在“12.12”打印,而1.12345会打印为“1.123”。

0

不是最干净的;但它的工作原理。

NSMutableString* newResult = @"0"; 
NString* result = [[NSString stringWithFormat: @"%.5f", CGFloat] stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@"0"]]; 
if ([[result componentsSeparatedByString:@"."] count] == 1) 
{ 
    [newResult appendString:result]; 
} 
NSLog(@"%@",newResult);