如何将12345.0这样的双重格式打印为1.234E + 04? 我想打印这样的东西:
int N = 1024;
int time = 3476;
printf("%f", (N/time));
输出为:3.394531E+00
答案 0 :(得分:1)
您可以使用float
作为变量,也可以将某些变量转换为浮点类型,如下所示:
printf("%f", ((float)N/time));
如果您希望将数字始终保存在科学记数法 http://www.cplusplus.com/reference/cstdio/printf/中,则可以使用"%e"替换格式。
值得注意的是printf
默认所有double
都需要f F e E g G a A
。
答案 1 :(得分:0)
首先,您需要避免整数除法。例如,将N
转换为double(然后除法将带小数)。
使用%e
格式(%E
表示big-e),小数点后6位:
printf("%.6E", (double)N/time);
答案 2 :(得分:0)
由其他人评论和回答@Some programmer dude:使用浮点数学而不是整数数学来执行除法。
确保完成正确a/b
vs b/a
以实现“输出将为:3.394531E + 00”
使用"%.nE"
格式(其中n
是进动)以指数表示法打印。仅"%E"
就像"%.6E"
一样。
"%e"
与"%E"
类似,只是在输出中使用'e'
与'E'
。
#include <stdio.h>
int main(void) {
int N = 1024;
int time = 3476;
printf("%.6E\n", 1.0*N/time);
printf("%.6E\n", 1.0*time/N);
printf("%.3E\n", 12345.0);
return 0;
}
输出
2.945915E-01
3.394531E+00
1.234E+04