Could you clarify what you mean?
return (this.length > a2.length) - (this.length < a2.length) ?

As I understuat we have not guarante than (a < b) == - (a > b)
Also, if we have thos guarante, then
(a > b) - (a < b)  
if a < 0 => transform to
-1 - (-1) = 0. But 1 is needed.