40分求助,double和float的问题

P5719 【深基4.例3】分类平均

Rocca @ 2023-11-23 23:02:46

#include<stdio.h>
int main()
{
    int n;
    int k;
    scanf("%d %d",&n,&k);
    float sum1=0;
    float sum2=0;
    int cnt1=0;
    int cnt2=0;
    for(int i=1;i<=n;i++)
    {
        if(i%k==0)
        {
            sum1=sum1+i;
            cnt1++;
        }
        else
        {
            sum2=sum2+i;
            cnt2++;
        }
    }
    printf("%.1f %.1f",sum1/cnt1,sum2/cnt2);
    return 0;
}

by Rocca @ 2023-11-23 23:04:02

请问为什么用float就只能打40,改成double就满分


by happy_guest @ 2023-11-23 23:05:35

精度?


by Hatsunatsu @ 2023-11-23 23:56:25

@Rocca double 的精度是高于 float 的,这也是一般我们更多会使用 double 而非 float 的原因。


by Rocca @ 2023-11-26 22:27:23

@Hatsunatsu 好的,谢谢!


by Rocca @ 2023-11-26 22:27:56

@dengyongjia133 蟹蟹!


by littlecui @ 2023-12-08 08:30:11

@Rocca 请问为什么要double sum1啊?他不应该一定是整数吗? 但是我用int确实是小数点后面不对


by Rocca @ 2023-12-13 22:14:39

@littlecui 你用int的话,最后的除法那儿就是两个整数相除,会舍去小数部分的


by littlecui @ 2023-12-17 19:37:36

@Rocca 哦哦哦哦哦!明白了,谢谢大佬qwq


|