Нужно нормализовать значения и округлить
Код
// k - входящее число
// за норму возьмем значения из (0.1;1)
// s - на сколько порядков отличается от нормы
if(k >= 1.0f) s = (int)(log10(k)) + 1;
else s = (int)(log10(k));
// t - лежит в (0.1;1)
t = k / pow(10, s);
// e - округляем и возвращаем порядок
if(t < 0.5f) e = 0.5f * pow(10, s);
else e = pow(10, s);