1.2e+21是多少

include <stdio.h>

int main(void)
{

printf("%lld",1.2e+21);
return 0;

}

输出的是4922508429807331632

我觉得1.2e+21不是E计数法表示1.2乘十的二十一次方吗?

阅读 4.1k
1 个回答

一个问题是,long long类型的最大值为9223372036854775807,你给的数超出范围了。

另一个问题是,long longdouble的编码方式是不一样的,不要把double%lld输出,可以进行显式类型转换。

下面是一个对比例子:

#include <stdio.h>
int main() {
    // 200.000000
    printf("%f\n", 2.0e2);
    // 1099511628032
    printf("%lld\n", 2.0e2);
    // 200
    printf("%lld\n", (long long)2.0e2);
    return 0;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进