当我在浮点值上使用%运算符时,我得到错误,指出“二进制%的操作数无效(有'浮'和'双')”。我只想输入整数值,但数字非常大(不是在int类型的范围内)所以为了避免我使用float的不便。有没有办法在这么大的整数值上使用%运算符????
答案 0 :(得分:17)
您可以使用标准数学库中的fmod
函数。它的原型在标准标题<math.h>
中。
答案 1 :(得分:6)
您最好使用long long
,它在大多数系统中的精度高于double
。
注意:如果您的数字大于long long
可以容纳的数字,则fmod
可能不会按照您希望的方式运行。在这种情况下,您最好的选择是bigint库,例如this one。
答案 2 :(得分:5)
%
运算符仅定义为整数类型的操作数;您需要将fmod*
库函数用于浮点类型:
#include <math.h>
double fmod(double x, double y);
float fmodf(float x, float y);
long double fmodl(long double x, long double y);
答案 3 :(得分:0)
考虑:int 32位和64位长long int
是的,%(modulo)运算符不适用于浮点数和双精度数。如果你想对大数字进行模运算,你可以检查long long int(64bits)
这可能对你有所帮助。
仍然是64位以上的范围,那么在这种情况下,您需要将数据存储在..字符串中并以算法方式进行模运算。
或者你可以使用任何脚本语言,如python
答案 4 :(得分:0)
如果你想长时间使用int,如果存在更好的格式,请不要使用对你的问题不理想的格式。
答案 5 :(得分:0)
当我无法轻松访问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;
}