在C中格式化像xxxxE + xx这样的双倍

时间:2017-11-21 13:04:58

标签: c formatting double

如何将12345.0这样的双重格式打印为1.234E + 04? 我想打印这样的东西:

int N = 1024;
int time = 3476;
printf("%f", (N/time));

输出为:3.394531E+00

3 个答案:

答案 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