2012-11-25 2 views
2

У меня есть метод, который создает строку стиля денег из NSNumber.Проверьте, не имеет ли NSNumber число .00 цифр или нет.

+ (NSString *)formatShortPayment: (NSNumber *)payment { 

    if (![payment isEqual: [NSNull null]]) { 

     // Set locale to GB 
     NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"]; 
     NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
     [formatter setLocale: locale]; 
     [formatter setNumberStyle: NSNumberFormatterCurrencyStyle]; 

     // If the payment is 1000 or over, get rid of fraction numbers 
     if ([payment doubleValue] >= 1000.0) { 
      [formatter setMaximumFractionDigits: 0]; 
      payment = [NSNumber numberWithFloat:([payment floatValue]/1000)]; 
     } 

     else { 
      // Here's where I want to check if the value ends with .00 or not 
     } 

     // Return clean number 
     return [formatter stringFromNumber: payment]; 

    } 

    return nil; 
} 

Это прекрасно работает, но если значение < 1000,0 Я хотел бы проверить, что хвостовые цифры и удалить их, если они равны .00.

Например: 25,00 => 25 13,29 => 13,29

Я не уверен, как лучше всего для достижения этой цели. Какие-либо предложения?

ответ

10
if (([payment doubleValue] - floor([payment doubleValue]) < 0.01) { 
    [formatter setMaximumFractionDigits: 0]; 
} 

Это должно сработать.

+1

Работает элегантно и ожидаемо. Спасибо. – squarefrog

+0

Умный действительно. Интересно, работает ли это для всех валют, но я предполагаю, что нет никакой валюты с более чем двумя цифрами ... –

+0

@ErikvanderNeut Моя страна и несколько соседних стран. Не так уж редко, поэтому, если вы хотите сделать что-то как можно более международным, лучше избегайте этого. Это просто отвечает на вопрос ОП. – Mazyod