2014-03-27 2 views
0

Как добавить запятые в число с плавающей запятой. означает, что если у меня есть номер, как 3652, чем выход будет 3,652.00 и , если число будет +3652,359618 чем 3,652.36 это работа, но для 3652 его не вернуть двух знаков после запятой, как 3,652.00 я использую в настоящее время этот код, чтобы сделать это:Как добавить запятые в число с плавающей запятой

float num = 3652; 
NSNumberFormatter * formatter = [NSNumberFormatter new]; 
[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[formatter setMaximumFractionDigits:2]; 
NSString *newString = [formatter stringFromNumber:[NSNumber numberWithFloat:num]]; 
+1

и делает этот код работать? – Flexicoder

+0

@Flexicoder no buddy Этот код не работает должным образом. – user2524618

+0

Вы хотите указать символ разделителя запятой или разделитель с плавающей запятой? или просто установить ограничение округления? –

ответ

1

Вам нужно округлить число с плавающей запятой, чтобы сделать его округляется до 2-х знаков после запятой, как показано ниже:

float num = 3652.359618; 
num = ceilf(num * 100)/100; 
NSNumberFormatter * formatter = [NSNumberFormatter new]; 
[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[formatter setMaximumFractionDigits:2]; 
NSString *newString = [formatter stringFromNumber:[NSNumber numberWithFloat:num]]; 

NSRange range= [newString rangeOfString:@"."]; 
if (!range.length) { 
    newString = [NSString stringWithFormat:@"%@.00",newString]; 
} 

NSLog(@"%@",newString); 

Следующий код работает, но не уверен, что это хороший способ достичь. Надеюсь, я получу комментарии/отзывы об этом. Другие лучшие ответы по-прежнему приветствуются.

+0

Спасибо за ваш ответ, но для этого кода после того, как мне понадобится два десятичных числа с плавающей запятой в каждом номере, мне нужно 3652 значение вернется как 3,652.00 – user2524618

+0

@ user2524618: Обновлен мой ответ, plz check –

+0

Спасибо за решение. – user2524618

0

Вы должны попробовать ниже код:

NSString *newString = [formatter stringFromNumber:[NSNumber numberWithFloat:(num*100.0)/100.0]]; 
0

NSNumberFormatterDecimalStyle использует локаль устройства для отображения номера и сепараторов. Для того чтобы усилить собственное форматирование, попробуйте установить разделители на NSNumberFormatter:

[formatter setDecimalSeparator:@"."]; 
[formatter setThousandsSeparator:@","]; 
+0

Вам также необходимо установить minimumFractionDigits на 2. –

+0

Это уже в коде, представленном в вопросе. – Adis

+0

Нет, это не в коде. Он просто устанавливает maximumFractionDigits. –

0

С этим разъяснением относительно цели, просто добавьте:

[formatter setMinimumFractionDigits:2]; 
Смежные вопросы