I know this is an old thread, but this is a common query and this page came up in my google search.
This is an alternate, practical, simple method that does not account for negative numbers or trailing zeros.
For Cell B2:
=LEN(TEXT(B2,"0.########E+00"))-5
To add negative numbers:
=IF(B2<0,LEN(TEXT(B2,"0.########E+00"))-6,LEN(TEXT(B2,"0.########E+00"))-5)
Add more #'s for more precision.