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 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化