Нужно нормализовать значения и округлить 
 Код
// 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);