It's common in English to use these types of statements where a direct answer might seem too assertive. For example, if you'd asked me how I had been lately, I might say "not bad", rather than "good", as being good implies being better than normal, whereas not bad is just not bad.
In fact, people often describe things in terms of them not being the opposite of what they are. Other examples include:
- Not the best (bad)
- Not the brightest (stupid)
- Not exactly perfect (flawed)
- Not without its problems (problematic)
- Not exactly rocket science (trivial)
English speakers often avoid making assertive statements unless they fully intend to be assertive. For example, they may begin a statement of fact with "I believe...", "It seems..." or "Apparently...".
Using direct assertions sparingly gives them more impact too. To say "He's stupid" is less forgiving than saying "He's not the brightest chap I've ever met."
Edwin Ashworth noted in his comment that this amelioration is known as hedging, and the not un-X form described in this answer is known as litotes. From Wikipedia:
In rhetoric, litotes is a figure of speech and form of verbal irony in which understatement is used to emphasize a point by stating a negative to further affirm a positive, often incorporating double negatives for effect.