Great question.  For floating point types I use a threshold approach like you mentioned.  For integer types I use straight equality.  And remember, the tests work when run in series using one thread, so my gut tells me the tests are sound and that something else is going on.