此问题已在此处有答案:
Can't use modulus on doubles?(5个答案)
4天前关闭。
在这段代码中,我已经定义了这段代码中的其余部分为浮点数据类型,但编译器拒绝了,并假设将其定义为整数类型,这是什么原因呢?enter image description here
int main()
{
float days, hours, minutes, seconds;
float Totalseconds;
float Remainder;
float secondsperday;
float secondsperhour;
float secondsperminute;
secondsperday = 24 * 60 * 60;
secondsperhour = 60 * 60;
secondsperminute = 60;
cout << "Enter total seconds\n";
cin >> Totalseconds;
days = floor(Totalseconds / secondsperday);
Remainder = (Totalseconds % secondsperday);
hours = floor(Remainder / secondsperhour);
Remainder = Remainder % secondsperhour;
minutes = floor(Remainder / secondsperminute);
Remainder = Remainder % secondsperminute;
seconds = Remainder;
cout << days << ":" << hours << ":" << minutes << ":" << seconds;
return 0;
}
1条答案
按热度按时间0pizxfdo1#
表达式必须在% s上具有整数或未限定范围的枚举类型
像
float
这样的浮点数在C++中没有%
运算符。它们都不是整数(即整数,如int
)或无作用域枚举(即enum
),所以你得到这个错误。如果你想要一个类似于
%
运算符的浮点余数,你可以使用std::fmod
:然而,在代码中,似乎没有一个数字必须是
float
(除非Totalseconds
可以是123.456)。如果您只是将所有float
类型更改为int
,则此代码也可以编译。