如何在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; }