jMfOvO 2023-04-06 21:45 采纳率: 33.3%
浏览 8
已结题

刚学c++,问一下这里浮点数相关的问题

刚开始学c++,想问一下为什么最后出来的avg是整数,不是应该是4.5吗(20个数字是0到9重复两遍的时候)

#include<iostream>
using  namespace std;
int main(void) {
    int a[20], i, count1 = 0, count2 = 0, sum1 = 0, sum2 = 0, sum = 0;
    cout << "请输入20个数字";
    for (i = 0; i < 20; i++) {
        cin >> a[i];
        sum += a[i];
        if (a[i] % 2 == 0) {
            count2++;
            sum2 += a[i];
        }
        else {
            count1++;
            sum1 += a[i];
        }
    }
    int max = a[0];
    int min = a[0];
    for (i = 1; i < 20; i++) {
        if (max < a[i]) {
            max = a[i];
        }
        if (min > a[i]) {
            min = a[i];
        }
    }
    double avg = sum / 20;
    cout << "奇数的个数是:" << count1 << " " << "奇数和为:" << sum1 << endl;
    cout << "偶数的个数是:" << count2 << " " << "偶数和为:" << sum2 << endl;
    cout << "最大值为:" << max << " " << "最小值为:" << min << " " << "平均值为:" << avg;
    return 0;
}

  • 写回答

2条回答 默认 最新

  • 瞬间的未来式 2023-04-06 22:06
    关注

    在 C++ 中,如果对两个整数进行除法运算,结果默认会向下取整,即只保留整数部分,舍去小数部分。这就是为什么您得到的 avg 是整数而不是带有小数部分的实数。为了得到带有小数部分的平均值,您可以将 sum 转换为实数类型再进行除法运算,例如将 double avg = sum / 20; 改为 double avg = (double)sum / 20; 或 double avg = static_cast(sum) / 20;。这样就能得到正确的平均值了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月14日
  • 已采纳回答 4月6日
  • 创建了问题 4月6日

悬赏问题

  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。
  • ¥20 CST怎么把天线放在座椅环境中并仿真
  • ¥15 任务A:大数据平台搭建(容器环境)怎么做呢?
  • ¥15 r语言神经网络自变量重要性分析
  • ¥15 基于双目测规则物体尺寸
  • ¥15 wegame打不开英雄联盟
  • ¥15 公司的电脑,win10系统自带远程协助,访问家里个人电脑,提示出现内部错误,各种常规的设置都已经尝试,感觉公司对此功能进行了限制(我们是集团公司)
  • ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型