• int类型位数头文件，直接#include <intlong.h>即可。（要把次头文件放入\CodeBlocks\MinGW\include里）
• 获取int的长度是否比这种方法更简洁？ int length = String.valueOf(1000).length();
本文翻译自：Way to get number of digits in an int?
获取int的长度是否比这种方法更简洁？
int length = String.valueOf(1000).length();


#1楼
参考：https://stackoom.com/question/5TwF/获取int的位数的方法

#2楼
How about plain old Mathematics? 普通的老数学怎么样？ Divide by 10 until you reach 0. 除以10直到达到0。
public static int getSize(long number) {
int count = 0;
while (number > 0) {
count += 1;
number = (number / 10);
}
return count;
}


#3楼
The logarithm is your friend: 对数是你的朋友：
int n = 1000;
int length = (int)(Math.log10(n)+1);

NB: only valid for n > 0. 注意：仅对n> 0有效。

#4楼
Since the number of digits in base 10 of an integer is just 1 + truncate(log10(number)) , you can do: 由于整数的基数10中的位数仅为1 + truncate（log10（数字）） ，因此您可以：
public class Test {

public static void main(String[] args) {

final int number = 1234;
final int digits = 1 + (int)Math.floor(Math.log10(number));

System.out.println(digits);
}
}

Edited because my last edit fixed the code example, but not the description. 编辑，因为我的上一次编辑修复了代码示例，但没有修改说明。

#5楼
Your String-based solution is perfectly OK, there is nothing "un-neat" about it. 你的基于String的解决方案完全没问题，没有什么“不整齐”的。 You have to realize that mathematically, numbers don't have a length, nor do they have digits. 你必须在数学上认识到，数字没有长度，也没有数字。 Length and digits are both properties of a physical representation of a number in a specific base, ie a String. 长度和数字都是特定基数中数字的物理表示的属性，即字符串。
A logarithm-based solution does (some of) the same things the String-based one does internally, and probably does so (insignificantly) faster because it only produces the length and ignores the digits. 基于对数的解决方案（基于字符串的）在内部执行（某些）相同的操作，并且可能更快（无关紧要）更快，因为它只生成长度并忽略数字。 But I wouldn't actually consider it clearer in intent - and that's the most important factor. 但我实际上并不认为它的意图更清晰 - 这是最重要的因素。

#6楼
Can I try? 我可以试试吗？ ;) ;）
based on Dirk's solution 基于Dirk的解决方案
final int digits = number==0?1:(1 + (int)Math.floor(Math.log10(Math.abs(number))));

展开全文
• ## C语言取得int的位数

千次阅读 2016-09-16 17:28:40
//取得一个int位数 int getLength(int num){ int n = num, count = 0; while (n) { count++; n /= 10; } return count; }
//取得一个int的位数
int getLength(int num){

int n = num, count = 0;

while (n)

{

count++;

n /= 10;

}

return count;
}
展开全文
• 2.编译器在处理的时候根据操作系统的位数决定int的字节数，32位，16位都是4个字节的，64位是8个字节 3.用sizeof(1)可以看出数字1的字节数，1一般默认都是int类型来存储的 4.long的位数也是不确定的，lon
前提：一直以来对于位数问题理解实在是模糊，作为一个混迹编程多年的菜鸟实在是羞愧难当！
int 类型：
1.默认是有符号的，无符号类型（unsigned int）
2.编译器在处理的时候根据操作系统的位数决定int的字节数，32位，16位都是4个字节的，64位是8个字节
3.用sizeof(1)可以看出数字1的字节数，1一般默认都是int类型来存储的
4.long的位数也是不确定的，long long 确定是8个字节
5.在C11的标准中追加stdint.h避免了位数的不确定如：int32_t就是指4个字节的，int8_t就是一个字节
位数与字节：
字节也叫Byte，是计算机数据的基本存储单位。
如：C语言中的byte类型占一字节，一字节等于八位
我们来看看一个位能表示多少东西: 最小0 最大1  表示 2的1次方 再看看两个位能表示多少东西： 最小00 最大11 共2的2次方， 能表达四个数 再看看三个位能表示多少东西： 最小000 最大111 共2的3次方，能表达8个数 那八个位能表示多少？ 最小:00000000 最大:11111111 这就是8位 也叫一个字节  如果用数没有正负之分那可以表示 0~255 共256个数字. 也可以叫做 2的8次方，你用计算器算算，2的8次方是不是等于256？ 如果数有正负之分那可以表示-128~+127 也是256个数，因为8位里面拿走一个位用来表示正负了，所以只能表示最大127  接下来 : 9位 = 2的九次方 =512个数字 接下来: 10位 = 2的十次方 =1024 个 ..... 以此类推  现在知道答案了吧：  1 byte = 1字节  = 8bit 可表达 2的八次方个数字 1 short= 2字节  = 16bit 可表达2的十六次方个数字 1 int  = 4字节  = 32bit 可表达2的32次方 1024GB=1TB  其中：K是千 M是兆 G是吉咖 T是太拉。 在电脑里一个中文字是占两个字节的。


展开全文
• 如果要计算一个int类型数据的位数，方法：1、传统的用一个计数变量count，然后循环体中一直number/10,count计数，最后的count就是位数2、直接用log函数，位数count=(int)log10(num)+13、用sprintf和strlen函数，...
【转自：http://blog.csdn.net/thepeakofmountain/article/details/37575893】
如果要计算一个int类型数据的位数，方法：
1、传统的用一个计数变量count，然后循环体中一直number/10,count计数，最后的count就是位数
2、直接用log函数，位数count=(int)log10(num)+1
3、用sprintf和strlen函数，sprintf(str,”%d”,num)，count=strlen(str)，这种直接求长度效率肯定要低很多，但是直接用了库函数不需要自己实现，如果需要对字符串处理的话，str还是很有价值的
展开全文
• int : -2147483648~2147483647 10位 long long int : 最大值：9223372036854775807long long的最小值：-9223372036854775808 19位
• 下面写两个方法来实现。 第一个方法：用log10 #include<iostream> #include<cmath> using namespace std;...int main() { int n; while(1) { cin>>n; int count=1+log10(n); ...
• int main() { for(int i=0;i;i++) { stringstream ss; ss(4)('0'); string dir=ss.str(); cout; } } 运行结果： frame0000.jpg frame0001.jpg frame0002.jpg frame0003.jpg frame0004.jpg frame0005....
• 偶然间，在查看Integer的源码的时候，发现一个很便捷的方法，可以判断int数值的位数；不多说，直接添源码： final static int [] sizeTable = { 9, 99, 999, 9999, 99999, 999999, 9999999, 99999999, 999999999, ...
• ## Java查看int值的位数

千次阅读 2014-02-24 21:14:31
判断一个int值是几位数，要是我自己实现，估计又会想到除法和模运算了，偶然在java标准API源码中发现的写法，很强大。 public class Test { final static int[] sizeTable = { 9, 99, 999, 9999, 99999, 999999,...
• unsigned int 0～4294967295 int 2147483648～2147483647  unsigned long 0～4294967295 long 2147483648～2147483647 long long的最大值：9223372036854775807 lon
• ## C++声明整数的位数

千次阅读 2020-02-01 13:06:13
可以在 C++ 代码中直接声明一个整形变量的位数，例如： int a:4; //变量 a 为四位整数。 a = 7; //a = 7; a++; //a = -8; C++功能太丰富了，用了一辈子都无法完全掌握，听说今年又扩展功能了。 ...
• int i=1; QString b=QString("%1").arg(i, 3, 10, QChar('0')); 其中3表示需要保留3位数字，10是10进制，后面是以0补齐的意思。 方法二： int cmd=1; QString str=QString::number(cmd).sprintf("%03d",cmd); -...
• 转载自：http://ych0108.iteye.com/blog/2174134java中int转String位数不够前面...d表示参数为整数类型 今天想将int 转String 位数不够前面补零，在本来想看看有没有现成的API的，结果搜出来的大多数下面这个 public
• Java中没有Int32,Int64,,只有int,short,long Java中int就代表Int32 ,short就代表Int16，long就代表Int64 首先，几个基本的关键字： Int16 = short, 占2个字节. -32768 ~ 32767 Int32 = int, 占4个字节. -...
• int 为32位，数字范围为（-2^31 ~ 231-1），由于210近似为1024即10^3，故int的数字范围大约为（- 10^9 ~ 10^9） short 为16位 double为64位 在进行强制转换时，如double转int,int转short，会忽略高位上的数字。 ...
• int类型: 4字节32位 第一位：符号位 2-9位：阶位/指数位 10-32位：普通数值位 0 00000000 00000000000000000000001 flaot类型: 4字节32位 第一位：符号位 2-9位：阶位/指数位 10-32位：...
• int类型能存放10位的数字，最大为2147483647； int a=2147483647;这样定义没有问题 int b=2147483648;这样就会出错 应该这样定义long bb=2147483648l; 这是在java中，如果是在数据库中，值的大小超过了...
• 先把int转成String，通过length函数计算出是几位数。 public class Test1 { public static void main(String[] agrs) { int i=3445; String str= String.valueOf(i); System.out.println(str.length()); } }...
• There are also two types called just int and uint that are the natural or most efficient size of signed and unsigned integers on a particular platform; int is by far the most widely used numeric type...
• ## 求整数的位数及各位数字之和

千次阅读 多人点赞 2019-11-24 11:28:45
对于给定的正整数N，求它的位数及其各位数字之和。 输入格式： 输入在一行中给出一个不超过10​的9次幂​​的正整数N。 输出格式： 在一行中输出N的位数及其各位数字之和，中间用一个空格隔开。 输入样例： ...
• C# int int16 Int32 Int64的介绍今天看到别人的代码中用到Int32，UInt32相关，想到自己平时用的都是int类型整数，就心生好奇的翻了一下资料： Int32 值类型表示值介于 -2,147,483,648 到 +2,147,483,647 之间的有...
• 一、int的范围 python2： 　在32位机器上，整数的位数为32位，取值范围为-2**31～2**31-1； 　在64位系统上，整数的位数为64位，取值范围为-2**63～2**63-1； python3： 　理论上长度是无限的（只要内存足够...
• 在格式化输出语句中表示变量的字母及%中间的部分控制输出位数，小数点后是小数位数。 For example： // homework2.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 //2. 由键盘任意输入一个整数(变量zs...
• a = int(input()); print(len(str(a))) print(a) 输入： 123 输出： 3 123
• 文章目录Go之如何提取数字的各个位数？1. 直接用数学方法进行计算2. 将数字转换成字符串，再进行截取总结 Go之如何提取数字的各个位数？ 主要有两种方法 直接用数学方法进行计算 ...var data int = 12...
• ## javascript的整数位数

千次阅读 2018-04-07 00:30:08
今天偶然发现了一道题目: Given a 32-bit signed integer, reverse digits of an integer. 题目让我写一个函数,它把 integer传进来,函数返回 integer的反转数.这个题也没什么难度,但是他要求32位,而我们都知道js...
• Integer 整型是有个范围的，而这个...这时候超出范围的数字会被解释为float类型，所以is_int（）函数判断会是false,下面是64位的整数溢出： $large_number = 9223372036854775807; var_dump(is_int($large_numbe...
• ## C++之 __int16 用法

千次阅读 2017-10-25 19:27:48
在看别人代码的时候看到了 __int 16 定义的变量 于是好奇，为什么不用 int 定义上网查了一下 首先要知道 这里的16是指16个位一个汉子有两个字节(byte)一个int有4个字节 而一个字节有8个位(bit) 也就是一个int有...
• int(M) M表示最大显示宽度。最大有效显示宽度是255。显示宽度与存储大小或类型包含的值的范围无关。 在 int(M) 中，M 的值跟 int(M) 所占多少存储空间并无任何关系。 int(1)、int(4)、int(10) 在磁盘上都是占用 4 ...

...