错误是什么:二进制%的无效操作数(具有'float'和'int')意味着什么

时间:2014-09-18 13:44:55

标签: c

#include <stdio.h>

int main(void) 
{
    float with;
    float inacbal;
    float acleft;
    scanf("%f",&with);
    scanf("%f",&inacbal);
    if((with%5)==0)//error here
    {
        acleft=inacbal-with-0.50;
        printf("%f",acleft);
    }
    else
        printf("%f",inacbal);
    return 0;
}

2 个答案:

答案 0 :(得分:5)

float with;
if((with%5) == 0)

不正确。您只能将%应用于整数。如果您真的想在float上进行模运算,请使用fmod,或者如果您对其余部分的符号不感兴趣,请使用新的IEEE 754r强制要求的C99&#39}。 s remainder。来自Sun的Numerical Computation Guide

  

余数(x,y)是IEEE标准754-1985中规定的操作。余数(x,y)和fmod(x,y)之间的差异是,余数(x,y)返回的结果的符号可能与x或y的符号不一致,而fmod(x,y)始终返回符号与x符合的结果。

答案 1 :(得分:1)

您收到该错误是因为您无法将模数运算符(%)与float一起使用。

如果要计算剩余部分,请使用fmod(),如下所示:

fmod(with,5);

fmod将返回除法的剩余部分。不要忘记包含math.h以使用fmod