Imprima el valor del exponente constante usando printf en c

Usé el especificador de formato %e . Se intentó %3.2e o %4.3e .

Ejemplo:
si var=0.001342 , entonces quiero imprimir 0.1342e-02 . Pero imprime 1.342e-03
si var=0.543124 , entonces quiero imprimir 54.3124e-02 . Pero imprime 5.43124e-01
si var=0.0123653 , entonces quiero imprimir 1.23653e-02 .

Eso es lo que quizás sea el valor, solo quiero corregir el valor de mi exponente e imprimir el resultado.

Del manual:

eE El argumento doble se redondea y se convierte en el estilo [-] d.ddde + -dd donde hay un dígito antes del carácter de punto decimal y el número de dígitos después de que es igual a la precisión; si falta la precisión, se toma como 6; si la precisión es cero, no aparece ningún carácter de punto decimal. Una conversión E usa la letra E' (rather than e’) para introducir el exponente. El exponente siempre contiene al menos dos dígitos; si el valor es cero, el exponente es 00.

eE es para la notación científica, por lo que solo un dígito no nulo antes del punto decimal.

Necesitas hacer la conversión por ti mismo, como:

 float number = 0.01023; float normalized = number*100; int mantissa_int_part = normalized; int mantissa_decimal_part = (normalized-mantissa_int_part)*10000; printf("%02d.%04d e-2",mantissa_int_part,mantissa_decimal_part); 

No es posible especificar el número de dígitos antes del separador decimal con los especificadores de formato de punto flotante estándar.

Es el punto completo de la “notación científica” tener un (o cero) dígitos antes del punto decimal y toda la información sobre “dónde está el punto decimal” proviene del exponente.

Si tiene algún formato fijo (siempre e-2) puede producir algo como:

 printf("%f e-2", x*100.0); 

Editar

O, para hacerlo más estándar, la notación científica :

 printf("%f * 10^-3", x*1e3);