Functions like NumberForm first find the exponent that would make exactly one digit appear to the left of the decimal point when the number is printed in scientific notation. Then they take this exponent and apply the function specified by ExponentFunction to it. If the value obtained from this function is an integer, it is used as the exponent of the number. If it is Null, then the number is printed without scientific notation.
The argument provided for the function specified by ExponentFunction is always an integer.
In NumberForm, the default setting for ExponentFunction never modifies the exponent, but returns Null for machine numbers with exponents between -5 and 5, and for high-precision numbers where insignificant zeros would have to be inserted if the number were not printed in scientific notation.