如何在c中使用%运算符表示浮点值

当我在浮点值上使用%运算符时,我得到错误,指出“无效操作数为二进制%(有’浮’和’双’)”。我只想输入整数值,但数字非常大(不在范围内) int类型)所以为了避免我使用float的不便。有没有办法在这么大的整数值上使用%运算符????

您可以使用标准数学库中的fmod函数。 它的原型在标准头

你可能最好使用long long ,它在大多数系统中具有比double更高的精度。

注意:如果您的数字大于long long持有的数字,那么fmod可能不会按您希望的方式运行。 在这种情况下,你最好的选择是bigint库,比如这个 。

%运算符仅为整数类型的操作数定义; 你需要将fmod*库函数用于浮点类型:

 #include  double fmod(double x, double y); float fmodf(float x, float y); long double fmodl(long double x, long double y); 

考虑:int 32位和64位长long int

是的,%(modulo)运算符不适用于浮点数和双精度数。如果你想对大数字进行模运算,你可以检查long long int(64bits)这可能对你有帮助。

仍然是64位以上的范围,那么在这种情况下,您需要将数据存储在..字符串中并以算法方式进行模运算。

或者你可以使用任何脚本语言,如python

如果你想长时间使用int,如果存在更好的格式,请不要使用对你的问题不理想的格式。

当我没有轻松访问fmod或其他库时(例如,快速做Arduino草图),我发现以下工作得很好:

 float someValue = 0.0; // later... // Since someValue = (someValue + 1) % 256 won't work for floats... someValue += 1.0; // (or whatever increment you want to use) while (someValue >= 256.0){ someValue -= 256.0; }