开发者社区 问答 正文

1.2e+21是多少

include <stdio.h>

int main(void)
{

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

}

输出的是4922508429807331632

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

展开
收起
杨冬芳 2016-05-30 17:12:42 5317 分享 版权
1 条回答
写回答
取消 提交回答
  • IT从业

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

    另一个问题是,long long和double的编码方式是不一样的,不要把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;
    }
    2019-07-17 19:20:47
    赞同 展开评论
问答地址: