如何在 C 程序中禁用科学记数法(在 UNIX 下编译)

  • 本文关键字:UNIX 编译 程序 c
  • 更新时间 :
  • 英文 :


我无法禁用科学记数法...我想在屏幕上打印数字的确切值,而不是科学记数法。这是我的第一个C项目。这是一个简单的计算器,它只是一个原型,我想从这个开始创建一个非常复杂的程序。任何帮助或提示将不胜感激。感谢您的支持。

#include <math.h>
#include <stdio.h>
#define ADD(a, b) (a += b)
#define SOT(a, b) (a -= b)
#define PER(a, b) (a *= b)
#define DIV(a, b) (a /= b)
#define POT(a, b) a = pow(a, b)
#define LOG(a, b) a = (log10(a) / log10(b))
#define PERC(a) a = (a / 100)
{
float a, b, d;
static float e;
char c, g;
printf("Calcola n");
scanf("%g", &a);
while (1) {
e = a;
scanf(" %c", &c);
switch (c) {
case '+':
scanf("%g", &b);
system("clear");
d = ADD(a, b);
printf(" n Risultato n n");
printf("(%g+%g)=", e, b);
printf("%g", d);
break;
case '-':
scanf("%g", &b);
system("clear");
d = SOT(a, b);
printf(" n Risultato n n");
printf("(%g-%g)=", e, b);
printf("%g", d);
break;
case '*':
scanf("%g", &b);
system("clear");
d = PER(a, b);
printf(" n Risultato n n");
printf("(%g*%g)=", e, b);
printf("%g ", d);
break;
case '/':
scanf("%g", &b);
system("clear");
d = DIV(a, b);
printf(" n Risultato n n");
printf("(%g/%g)=", e, b);
printf("%g", d);
break;
case '^':
scanf("%g", &b);
system("clear");
d = POT(a, b);
printf(" n Risultato n n");
printf("(%g^%g)=", e, b);
printf("%g", d);
break;
case 'l':
scanf("%g", &b);
system("clear");
d = LOG(a, b);
printf(" n Risultato n  n");
printf("(%glog%g)=", e, b);
printf("%g", d);
break;
case '%':
system("clear");
d = PERC(a);
printf(" n Risultato n n");
printf("%g%=", e);
printf("%g", d);
break;
}
}
return 0;
}

使用f格式说明符,而不是g

将浮点数转换为样式[-]ddd.ddd中的十进制表示法。

例:

printf ("%f", d);

而不是:

printf ("%g", d);

最新更新