首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C++中获取整数的十进制表示长度的最佳方法是什么?

在C++中获取整数的十进制表示长度的最佳方法是什么?
EN

Stack Overflow用户
提问于 2009-11-08 19:25:38
回答 14查看 2K关注 0票数 5

最好的写法是什么?

代码语言:javascript
复制
int NumDigits(int n);

在C++语言中,它返回输入的十进制表示中的位数。例如11->2,999->3,-1->2等。

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2009-11-08 20:01:45

简单明了,独立于sizeof(int)

代码语言:javascript
复制
int NumDigits(int n) {
    int digits = 0;
    if (n <= 0) {
        n = -n;
        ++digits;
    }
    while (n) {
        n /= 10;
        ++digits;
    }
    return digits;
}
票数 17
EN

Stack Overflow用户

发布于 2009-11-08 19:30:04

代码语言:javascript
复制
//Works for positive integers only
int DecimalLength(int n) {
    return floor(log10f(n) + 1);
}
票数 12
EN

Stack Overflow用户

发布于 2009-11-08 19:33:17

最快的方法可能是二进制搜索。

代码语言:javascript
复制
//assuming n is positive
if (n < 10000)
    if (n < 100)
        if (n < 10)
            return 1;
        else
            return 2;
    else
        if (n < 1000)
            return 3;
        else
            return 4;
 else
     //etc up to 1000000000

在这种情况下,不管输入是什么,它大约是3次比较,我怀疑这比除法循环或使用doubles快得多。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1696086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档