You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取13/15/16位long long类型数字的前两位?

获取long long数字的前两位数字

嘿,这个需求其实很好实现,针对你提到的13位、15位或16位的long long类型数字,我给你两种实用的方案:

方案一:数学计算法(高效无额外内存开销)

这种方法通过除法运算直接提取前两位,不需要转换字符串,效率更高。核心思路是根据数字的位数,将其除以对应的10的幂次,得到的结果就是前两位数字。

因为你的数字只有三种长度:

  • 13位:除以10^11(即100000000000)
  • 15位:除以10^13(即10000000000000)
  • 16位:除以10^14(即100000000000000)

代码示例(C++)

#include <iostream>
using namespace std;

int getFirstTwoDigits(long long num) {
    if (num >= 1000000000000LL) { // 匹配13位及以上数字
        if (num >= 100000000000000LL) { // 匹配15位及以上数字
            if (num >= 1000000000000000LL) { // 匹配16位数字
                return num / 100000000000000LL;
            } else { // 匹配15位数字
                return num / 10000000000000LL;
            }
        } else { // 匹配13位数字
            return num / 100000000000LL;
        }
    }
    // 可根据需求处理不符合长度的情况,比如返回-1或抛出异常
    return -1;
}

int main() {
    long long num1 = 1234567890123LL;
    cout << getFirstTwoDigits(num1) << endl; // 输出12
    
    long long num2 = 453456789012345LL;
    cout << getFirstTwoDigits(num2) << endl; // 输出45
    
    long long num3 = 3534567890123456LL;
    cout << getFirstTwoDigits(num3) << endl; // 输出35
    
    return 0;
}

方案二:字符串转换法(直观易理解)

如果你觉得数学计算的幂次容易记混,也可以把数字转换成字符串,直接截取前两个字符再转回整数,这种方法更直观,代码也更简洁。

代码示例(C++)

#include <iostream>
#include <string>
using namespace std;

int getFirstTwoDigits(long long num) {
    string numStr = to_string(num);
    // 先校验数字长度是否符合要求
    if (numStr.length() != 13 && numStr.length() != 15 && numStr.length() != 16) {
        return -1; // 不符合长度时返回标记值
    }
    string firstTwo = numStr.substr(0, 2);
    return stoi(firstTwo);
}

int main() {
    long long num1 = 1234567890123LL;
    cout << getFirstTwoDigits(num1) << endl; // 输出12
    
    long long num2 = 453456789012345LL;
    cout << getFirstTwoDigits(num2) << endl; // 输出45
    
    long long num3 = 3534567890123456LL;
    cout << getFirstTwoDigits(num3) << endl; // 输出35
    
    return 0;
}

两种方案都能完美满足你的示例需求,你可以根据自己的代码场景选择:追求性能选数学法,追求可读性选字符串法。

内容的提问来源于stack exchange,提问作者DynamicQ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:39:46