开发者社区> 问答> 正文

最简单的两个数相加的程序,online judge为什么通不过?

题目是输入两个正整数,输出他们的和。输入的数在1(含)到10^6(含)之间。
用scanf和printf就所有的测试用例都能通过,用cin和cout的话就总是有两个测试用例是wrong answer?但是实在看不出有什么问题。。
用scanf的代码:

    double a, b;
    scanf("%lf %lf",&a,&b);
    printf("%.0lf", a + b);
用cin,cout的代码:

    double x, y;
    cin >> x >> y;
    cout << x + y;

请问是哪儿可能导致这两种写法有不同的结果?

展开
收起
a123456678 2016-06-08 21:19:27 1991 0
1 条回答
写回答
取消 提交回答
  • 是因为超过一百万的结果会被cout输出成科学计数法形式,所以有的case无法通过。
    用double而不是int,虽然确实浪费内存,但是在只做正整数的加法的时候并不会因为精度而出错。

    2019-07-17 19:32:46
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载