C语言 实际输出的小数后第5位与预期输出的小数后第5位不同

rhfm7lfc  于 2023-08-03  发布在  其他
关注(0)|答案(1)|浏览(142)

实际输出的小数点后第5位数字与预期输出的小数点后第5位数字不同。
输出:558.29498预期:558.29496

double findMaxAverage(int* nums, int numsSize, int k){
float maxSum = -2147483648;
float currentSum = 0;

for(int i=0; i < numsSize; i++){
    currentSum += nums[i];
    if(i >= k - 1){
        if(currentSum > maxSum) maxSum = currentSum;
        currentSum -= nums[i - (k - 1)];
    }
}
return maxSum/k;
}

字符串
我试着这么做-

return (double)maxSum/k;


请帮我一下。

k2arahey

k2arahey1#

不要通过使用float然后将其强制转换为double而放弃精度。开始使用双精度浮点数。

double findMaxAverage(int* nums, int numsSize, int k) {
    double maxSum = -2147483648;
    double currentSum = 0;

    for (int i = 0; i < numsSize; i++) {
        currentSum += nums[i];

        if (i >= k - 1) {
            if (currentSum > maxSum) 
                maxSum = currentSum;

            currentSum -= nums[i - (k - 1)];
        }
    }

    return maxSum/k;
}

字符串

相关问题