Best effort valueOf to support lossy operation

Suppose someone either intentionally or unintentionally does num1 + num2 instead of num1.add(num2), the operation should go through on a best effort basis.

Before this change, num1 + num2 ends up being string concatentation and the result is unusable.

I think returning a best effort lossy version of the number to support lossy +/-/*/div operations is more useful than returning the string representation.