Diferentes maneiras de comparar NSDecimalNumber

Por exemplo, com primitivo, eu vou fazer isso

if ( (x >= 6000) && (x <= 20000) )
    // do something here 

e com NSDecimalNumber, é isso que eu tenho

if ( (([x compare:[NSNumber numberWithInt:6000]] == NSOrderedSame) || 
        ([x compare:[NSNumber numberWithInt:6000]] == NSOrderedDescending))
    && (([x compare:[NSNumber numberWithInt:20000]] == NSOrderedSame) || 
        ([x compare:[NSNumber numberWithInt:6000]] == NSOrderedAscending)) )
{
    // do something here
}

Existem outras maneiras (mais fáceis e mais elegantes) para essa comparação? Se eu converter o valor em primitivo, qual primitivo devo usar? Não quero usar CGFloat, float ou double, pois estou lidando com moeda aqui. Ou se eu os converter nos mencionados acima, alguém pode verificar / explicar sobre a precisão?

questionAnswers(8)

yourAnswerToTheQuestion