当我使用%运算符处理浮点数时,会出现错误,提示“invalid operands to binary % (have 'float' and 'double')”。我只想输入整数值,但这些数字非常大(超出int类型的范围),因此我使用浮点数来避免不便。有没有办法在这样的大整数值上使用%运算符?
%
运算符仅对整数类型的操作数有定义;对于浮点数类型,您需要使用 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);
你最好使用 long long
,它在大多数系统中比double
具有更高的精度。
注意:如果你的数字超过了long long
的容量限制,那么fmod
可能不会按照你想要的方式运作。在这种情况下,最好使用一个 bigint 库,例如这个。
当我没有易于访问的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;
}
考虑:32位int和64位long long int
是的,%(取模)操作符不能用于浮点数和双精度数..如果你想对大数进行取模运算,你可以检查long long int(64位)
,这可能会帮助你。
如果仍然超过64位,则需要将数据存储在..字符串中,并通过算法进行模运算。
或者您可以转到任何类似Python的脚本语言。