You cannot meaningfully use a numeric sort, since uniq expects its data to be sorted lexicographically.
uniq will not consider "01" to be equal to "1", nor 1.0 to 1.00, and nor " 1" to "1". If leading/trailing zeroes/whitespace are a concern, then either the file needs to be preprocessed to normalize the entries, or a more capable tool should be used, e.g. perl or AWK.
Notice how sort -un knows that it's doing a numeric comparison and considers all 4 terms to be equal. However, uniq considers each value to be distinct.
Good point. I assumed that was already taken into account. But the sample input provided is not sorted.
Back to original poster: uniq only works correctly on sorted file. It runs on whatever you provide it, but to get meaningful results the input to uniq must be sorted. uniq looks for adjacent duplicated lines.