C++中是否存在适用于整数类型的fmod函数?
针对整数的“取模”解决方案
嘿,这个问题问得很实用!其实在C++里,我们根本不需要专门找类似fmod的整数版本函数——因为语言本身就内置了处理整数取余的工具:
直接用
%运算符:这是最常用的方式,针对int、long、long long等所有整数类型都能直接进行取余操作。不过要注意,在C++11及以后的标准里,%运算的结果符号会和被除数保持一致。举几个例子:7 % 3的结果是1(-7) % 3的结果是-17 % (-3)的结果是1
如果需要同时获取商和余数:可以使用
<cstdlib>头文件里的div(针对int)、ldiv(针对long)、lldiv(针对long long)函数。这些函数会返回一个包含商和余数的结构体,适合需要同时用到这两个值的场景。示例代码如下:#include <cstdlib> #include <iostream> int main() { div_t result = div(-7, 3); std::cout << "商:" << result.quot << ",余数:" << result.rem << std::endl; // 输出:商:-2,余数:-1 }
另外要提醒一句:千万别想着把整数转成浮点数再用fmod,这种方式完全没必要——不仅会损失计算效率,对于较大的整数还可能因为浮点数精度限制导致结果出错。
内容的提问来源于stack exchange,提问作者Aaron Franke
相关产品推荐
相关产品推荐

