如何在C++中使用mod函数从ID中提取年份(附Excel示例)
在C++中实现类似Excel MOD函数的年份提取功能
当然可以在C中实现和你Excel里一样的逻辑,核心是用C的**取模运算符%**替代Excel的MOD函数,步骤和你在Excel里的操作完全一致,只是语法稍有不同。
具体实现步骤
针对你给出的示例ID 199734902138,步骤如下:
- 这个ID数值很大,超过了32位整数的存储范围,必须用64位整数类型(比如
long long)存储,避免溢出。 - 用
%计算取模结果,对应Excel的=MOD(id,100000000) - 用原ID减去取模结果,得到年份前缀的完整数值
- 将前缀数值除以
100000000,得到最终年份
完整代码示例
#include <iostream> int main() { // 定义ID,加LL后缀明确为long long类型 long long id = 199734902138LL; const long long divisor = 100000000; // 对应Excel的MOD操作 long long mod_result = id % divisor; // 计算年份前缀部分 long long year_part = id - mod_result; // 得到年份,转换为int类型更贴合实际使用场景 int year = static_cast<int>(year_part / divisor); std::cout << "提取的年份:" << year << std::endl; return 0; }
关键说明
- C++的
%运算符在正整数场景下和Excel MOD函数行为完全一致,都是返回两数相除后的余数。 - 必须使用
long long存储ID,因为199734902138远大于32位int的最大值(约2147483647),用int会导致溢出,结果错误。 - 最后将
year_part转为int是安全的,因为年份数值(如1997)在int的存储范围内。
内容的提问来源于stack exchange,提问作者THAVIDU
相关产品推荐
相关产品推荐

