Numeral conversion in awk

I am running into conversion of string to numbers in awk that I can't understand and don't know how to deal with properly

My script checks for numeric only field, I use this approach to do that:

$1 + 0 == $1

It works most of the time, but in some cases it does not behave how I expect it to behave, for example for value 673E5 script wrongly assumes it is numeric.

Please see below a series of values and how it is converted, hope it makes my question clearer:

  
 echo "67305"|awk '{s=$1+0==$1?"Eq":"No"; print $1 ";" $1+0 ";" s}'
 67305;67305;Eq
  
 echo "673N5"|awk '{s=$1+0==$1?"Eq":"No"; print $1 ";" $1+0 ";" s}'
 673N5;673;No
  
 echo "673E5"|awk '{s=$1+0==$1?"Eq":"No"; print $1 ";" $1+0 ";" s}'
 673E5;67300000;Eq
 

I used both awk and gawk, same reaction.

See how last example is badly converted and compare comes back with positive somehow.
What do I do wrong?

If it's not numeric, don't add zero to it.

In this case it's treating the E as an exponent, 673 * 10^5. That's actually a pretty standard notation for it.

Thanks for explaining the E-based notation, I forgot about it.

As I indicated, I use +0 approach to determine if the field is numeric, can't use your suggestion.

You only want to test if a given value is numeric? That'll be easier...

  echo "673E5"|awk '/^[0-9]+$/{print $0" is numeric"}'

Thank you.

As I am adapting your code to my script (I check 1st field to be numeric) I am not getting right answer, can you help me with my syntax here, please:

 $ echo "67E15"|awk '{if($1 ~ /[0-9]+$/){print $1" is numeric"}}'
67E15 is numeric
 

+++
I see - I missed the "^" (beginning of string) - Thanks it works now

You can shorten that to the code given in the post above yours.