使用c中的printf打印常量指数值

时间:2015-03-27 06:21:24

标签: c

我使用了%e格式说明符。已尝试%3.2e%4.3e

例:
如果var=0.001342,那么我想打印0.1342e-02。但打印1.342e-03
如果var=0.543124,那么我想打印54.3124e-02。但打印5.43124e-01
如果var=0.0123653,那么我想打印1.23653e-02

这就是价值,我只想修改我的指数值打印结果。

2 个答案:

答案 0 :(得分:14)

不可能使用标准浮点格式说明符指定小数分隔符之前的位数

在小数点前有一个(或零)数字是“科学记数法”的全部要点,所有关于“小数点在哪里”的信息来自指数。

如果你有一些固定的格式(总是e-2),你可能会产生类似的东西:

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

修改

或者,更多地standard scientific notation

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

答案 1 :(得分:6)

从手册:

  

eE 双参数已四舍五入并按样式转换                [ - ] d.ddde + -dd,小数点前有一位数                字符和后面的位数等于精度;如果精度丢失,则取6;如果                精度为零,不显示小数点字符。 E转换使用字母E' (rather than e')来引入                指数。指数始终包含至少两位数;如果                值为零,指数为00。

eE用于科学记数法,因此在小数点前只有一个非零数字。

您需要自己进行转换,例如:

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);