有没有办法得到int变量的长度,例如在字符串中我们通过简单地写int size = string.length();
获得长度{{1}}
答案 0 :(得分:0)
#include <cassert>
#include <cmath>
#include <iostream>
using namespace std;
int main () {
assert(int(log10(9)) + 1 == 1);
assert(int(log10(99)) + 1 == 2);
assert(int(log10(123)) + 1 == 3);
assert(int(log10(999)) + 1 == 3);
return 0;}
答案 1 :(得分:0)
对于长度,我假设你的意思是数字中的位数:
#include <math.h>
.....
int num_of_digits(int number)
{
int digits;
if(number < 0)
number = (-1)*number;
digits = ((int)log10 (number)) + 1;
return digits;
}
或者:
int num_of_digits(int number)
{
int digits = 0;
if (number < 0) number = (-1) * number;
while (number) {
number /= 10;
digits++;
}
return digits;
}
另一个选项可能是这个(也适用于浮点数,但结果无法保证):
#include <iostream>
#include <sstream>
#include <iomanip>
...........
int num_of_digits3(float number){
stringstream ss;
ss << setprecision (20) << number;
return ss.str().length();
}
答案 2 :(得分:0)
您可以在此处选择一些选项:
(这个答案假定你是指整数输入中可打印字符数)
将输入作为字符串读取并在转换为int之前获取其长度。请注意,此代码为简洁起见避免了错误处理。
#include <iostream>
#include <sstream>
using namespace std;
int main(int argc, char** argv) {
cout << "Please enter the value of i" << endl;
string stringIn = "";
cin >> stringIn;
cout << "stringIn = " << stringIn << endl;
size_t length = stringIn.length();
cout << "input length = " << length << endl;
int intIn;
istringstream(stringIn) >> intIn;
cout << "integer = " << intIn << endl;
}
读入一个整数并直接计算数字:
许多其他答案使用日志来做到这一点。我将给出一个能够将减号正确计算为角色的颜色。
int length_of_int(int number) {
int length = 0;
if (number < 0) {
number = (-1) * number;
++length;
}
while (number) {
number /= 10;
length++;
}
return length;
}
源自granmirupa的回答。
答案 3 :(得分:0)
不确定它是否符合您的要求,但您可以使用std :: to_string将数值数据转换为字符串,然后返回其长度。