ilog10(x) = Int(floor(log10(x)))
alog10(x) = abs(ilog10(x))
to_nonzero_digit(x::Integer) = 0
function to_nonzero_digit(x::AbstractFloat)
!isfinite(x) && throw(DomainError(x, "expected a finite value"))
if isinteger(x)
0
else
alog10(abs(x))
end
end
ns=(1.0, 0.5, 0.05, 0.0625, 0.001, 0.0025)
to_nonzero_digit.(ns) == (0, 1, 2, 2, 3, 3)