我正在尝试找到一种方法来查找整数的长度(位数),然后将其放在整数数组中。赋值还要求不使用STL中的类来执行此操作,尽管程序规范确实说我们可以使用“常用C库”(要问我的教授我是否可以使用cmath,因为我假设log10(num) + 1是最简单的方法,但我想知道是否有另一种方式)。
啊,这不需要处理负数。非负数。
我正在尝试创建一个变体“MyInt”类,它可以使用动态数组处理更广泛的值。任何提示将不胜感激!谢谢!
答案 0 :(得分:23)
任何基数中的整数n
的位数通过划分直至完成后得到:
unsigned int number_of_digits = 0;
do {
++number_of_digits;
n /= base;
} while (n);
答案 1 :(得分:11)
不一定是效率最高的,但是使用C ++最短且最易阅读的一个:
std::to_string(num).length()
答案 2 :(得分:9)
如果您可以使用C库,那么一种方法是使用sprintf,例如
#include <cstdio>
char s[32];
int len = sprintf(s, "%d", i);
答案 3 :(得分:6)
“我是指整数中的位数,即”123“的长度为3”
int i = 123;
// the "length" of 0 is 1:
int len = 1;
// and for numbers greater than 0:
if (i > 0) {
// we count how many times it can be divided by 10:
// (how many times we can cut off the last digit until we end up with 0)
for (len = 0; i > 0; len++) {
i = i / 10;
}
}
// and that's our "length":
std::cout << len;
输出3
答案 4 :(得分:4)
int
ceil(8*sizeof(int) * log10(2))
编辑:
对于某些值的小数位数:
ceil(log10(var+1))
这适用于数字> 0
。零必须单独检查。
答案 5 :(得分:4)
int intLength(int i) {
int l=0;
for(;i;i/=10) l++;
return l==0 ? 1 : l;
}
这是一个非常有效的
答案 6 :(得分:2)
作为一名计算机书呆子而不是数学书呆子,我会这样做:
char buffer[64];
int len = sprintf(buffer, "%d", theNum);
答案 7 :(得分:2)
有一种更好的方法可以做到这一点
#include<cmath>
...
int size = log10(num) + 1
....
适用于int和decimal
答案 8 :(得分:2)
如何(也适用于0和底片):
int digits( int x ) {
return ( (bool) x * (int) log10( abs( x ) ) + 1 );
}
答案 9 :(得分:1)
这是一种有效的方法吗?转换为字符串并查找length属性?
int num = 123
string strNum = to_string(num); // 123 becomes "123"
int length = strNum.length(); // length = 3
char array[3]; // or whatever you want to do with the length
答案 10 :(得分:1)
查找int和十进制数的长度的代码:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int len,num;
cin >> num;
len = log10(num) + 1;
cout << len << endl;
return 0;
}
//sample input output
/*45566
5
Process returned 0 (0x0) execution time : 3.292 s
Press any key to continue.
*/
答案 11 :(得分:1)
最好的方法是找到使用日志,它始终有效
int len = ceil(log10(num))+1;
答案 12 :(得分:0)
简单明了的功能
int intlen(int i)
{
int j=1;
while(i>10){i=i/10;j++;}
return j;
}
答案 13 :(得分:0)
C/C++ 和 STL 中都没有内置函数来查找整数的长度,但是可以找到的方法很少
这是一个用于查找整数长度的示例 C++ 代码,它可以写在一个函数中以供重用。
#include<iostream>
using namespace std;
int main()
{
long long int n;
cin>>n;
unsigned long int integer_length = 0;
while(n>0)
{
integer_length++;
n = n/10;
}
cout<<integer_length<<endl;
return 0;
}
这是另一种方法,将整数转换为字符串并找到长度,它用一行来完成:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
long long int n;
cin>>n;
unsigned long int integer_length = 0;
// convert to string
integer_length = to_string(n).length();
cout<<integer_length<<endl;
return 0;
}
注意:一定要包含 cstring
头文件
答案 14 :(得分:0)
最简单的方法是:
#include <string>
int int_length = to_string(42).length();
答案 15 :(得分:-1)
查找数字长度的最有效代码。也计算零,请注意“ n”是要给出的数字。
$result = call_user_func_array('array_merge', array($a));