当我运行以下代码时
int main(int argc,char *argv[]) {
double n = 2E-1;
printf("%d",n);
}
运行代码时,它会打印一个怪异的数字,而不是0.2(2E-1)。
答案 0 :(得分:3)
常量C用c语言做什么
浮点常量的文档为here。
格式1e2
或1E2
表示 1
乘以2
的十倍,您完全正确地认为{{ 1}}表示 2E-1
乘以2
或-1
的幂的十倍。
它是基于Eugene链接的科学E符号。
运行代码时,它会打印一个奇怪的数字
那仅仅是因为您使用了错误的格式说明符。这些已记录在here中,您可以看到您应该将0.2
中的一个用于双打。
答案 1 :(得分:0)
在C语言中,对于double,格式说明符为%lf
因此,如果您使用%lf
,则它将n
打印为0.200000
如果您使用%g
或%G
(由于支持的数据类型为float,double),则输出将为0.2