Odd comparisons to NaN


var a:Number = Number("asdf"); //results in setting a to NaN

trace(a); //traces NaN

trace(a > 0); //traces undefined
trace(a == 0); //traces false
trace(a >= 0); //traces true

I find it interesting in how the comparisons result in this example. Any simple explanations as to why this is?