这个程序的输出结果为啥是这样?%e不是以指数型格式输出实数吗,为啥结果这么奇怪
%e 是按科学计数法输出 浮点数,你这里输出的是整数。 你换成 float a = 10; 再看看
整形 10 转成 浮点数 ,它是一个 非常接近 0 的 浮点数, 科学计数法表示的近似值 就是 运行出来的 这个 4.940656e-323
因为%e是输出浮点数的格式,而你的a是int型的,把第5行int换成double就行
不知道你这个问题是否已经解决, 如果还没有解决的话:%e的实数指数型格式用于将实数以科学计数法的形式输出,科学计数法的指数为e的幂次,也就是以10的指数幂来表示实数。例如,3.1415926以%.3e输出就是3.142e+00,其中%.3e表示指数格式下保留三位小数。如果想在整个输出宽度内右侧对齐可以使用%10.2e,其中10表示输出宽度,.2表示保留两位小数。下面是一个例子:
#include <stdio.h>
int main() {
double num = 1.23456789;
printf("num in e notation is: %e\n", num);
printf("num in e notation with precision is: %.3e\n", num);
printf("num in right-aligned e notation with precision is: %10.2e\n", num);
return 0;
}
输出结果:
num in e notation is: 1.234568e+00
num in e notation with precision is: 1.235e+00
num in right-aligned e notation with precision is: 1.23e+00
需要注意的是,输出的宽度并不一定占满整个宽度,如果实际输出的宽度小于指定的宽度,则左侧自动补空格。如果想在整个宽度内左侧对齐,可以在指定宽度时使用负号,例如%-10.2e可以将输出左对齐。另外,需要特别注意在使用%f或%e方式输出小数时可能会出现精度问题。