2012-06-02 2 views
0

Итак, я стараюсь, чтобы мои значения округлялись до ближайшего целого числа с помощью IBAction.Как округлить значение поплавка с помощью кнопки

So 1.88 -> 2.00 , 
11.40 -> 12.00 , 
111.01 -> 112.00, etc.  

-

-(IBAction)roundUp:(id)sender 
{ 
    float floatRoundValue=lblTotalRound.text floatValue]; 
    ceilf(floatRoundValue); 
    NSString *stringRoundValue = [NSString stringWithFormat:@"%1.0f", floatRoundValue]; 
    lblTotalRound.text=stringRoundValue; 
} 

Вот что я получил. Но она по-прежнему округление вниз .5 и до ближайшего целого числа

(Ex. 1.19 -> 1 , i need 1.19 -> 2.00). 

Я попытался% 1.2f, но значение изменения оленьей кожи вообще.

Что я делаю неправильно?

ответ

1

ceilf это функция, которая возвращает значение (https://developer.apple.com/library/mac/#documentation/Darwin/Reference/Manpages/man3/ceil.3.html), вы просто необходимо изменить эту строку следующим образом.

floatRoundValue = ceilf(floatRoundValue); 

Таким образом, полный код в вашем случае будет таким.

-(IBAction)roundUp:(id)sender 
{ 
    float floatRoundValue=lblTotalRound.text floatValue]; 
    floatRoundValue = ceilf(floatRoundValue); 
    NSString *stringRoundValue = [NSString stringWithFormat:@"%1.0f", floatRoundValue]; 
    lblTotalRound.text=stringRoundValue; 
} 
+0

Yup, который работает! Благодарю. но еще один вопрос: как бы поместить знак $ перед моими значениями, не пройдя весь маршрут NumberFormatter? (Пример 1.88 -> $ 1.88) – iamruskie

+0

Как предложил Курт Ревис, используйте stringWithFormat, который является очень мощным инструментом. Просто вставьте свой знак доллара в строку, как этот «$% 1.0f». –

2

ceilf не изменяет значение, которое вы передаете. Оно возвращает измененное значение.

floatRoundValue = ceilf(floatRoundValue); 
+0

Ах хорошо, что имеет смысл. Благодарю. Я был так близко haha ​​ – iamruskie

+0

И как бы я положил знак $ перед моими значениями? (Пример 1.88 -> $ 1.88) – iamruskie

+0

Поместите '$' в строку формата. Посмотрите документацию для '- [NSString stringWithFormat:]', чтобы понять, как она работает. –

1

Если вам нужно иметь знак $ перед:

-(IBAction)roundUp:(id)sender 
{ 
    float floatRoundValue=(lblTotalRound.text floatValue]; 
    floatRoundValue = ceilf(floatRoundValue); 
    NSString *stringRoundValue = [NSString stringWithFormat:@"$%1.0f", floatRoundValue]; 
    lblTotalRound.text=stringRoundValue; 
} 

NSString Class Reference

Смежные вопросы