Как отобразить число с максимум 5 цифрами? - PullRequest
0 голосов
/ 07 января 2012

Я должен определить, где период с нуля начинает сокращать число, и я хочу 5 чисел после '.'

Я использую следующий код:

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

когда я использую его, например, с '3.50300000', он дает мне '3.503', и это нормально

Но когда я использую код с «0.50300000», он дает мне «.503», когда нужно «0.503».

Кто-нибудь может мне помочь?

Ответы [ 3 ]

2 голосов
/ 07 января 2012
NSString *result = [NSString stringWithFormat:@"%.5f", myFloat];
for (int i = result.length; [result characterAtIndex:i - 1] == '0'; --i)
    ;
result = [result substringToIndex:i];
1 голос
/ 07 января 2012

Это %N.Mf, где N - минимальная ширина поля, а M - количество десятичных знаков после «.». Если вам всегда нужна хотя бы одна цифра (возможно, «0») перед десятичной запятой и 3 цифры после, укажите %5.3f.

Обратите внимание, что при использовании стандартного % форматирования невозможно ограничить презентацию ТОЛЬКО 5 цифрами, так что 12.12345 будет печататься как "12.12", тогда как 1.12345 будет печататься как "1.123".

0 голосов
/ 07 января 2012

не самый чистый;но это работает.

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