return NaN if parsing failed