int quotient(int , int );
int remainder(int , int );
void seperate(int);
int main()
{
int input;
cout << "Input int " << endl;
cin >> input;
seperate(input);
}
int quotient(int divident, int divisor)
{
return divident / divisor;
}
int remainder(int divident, int divisor)
{
return divident % divisor;
}
void seperate(int input)
{
int integers[6] = {};
for (int i = 1; i <= 5; i++)
{
integers[i] = quotient(remainder(input, pow(10, 6 - i)), pow(10,5 - i));
}
for (int i = 1; i <= 5; i++)
{
cout << integers[i] << setw(2);
}
cout << endl;
}
我想知道为什么整数分隔适用于小值(例如 1234)的整数,但不适用于大值(例如 32767)。如此大的输入值的结果是 3 2-2-3-3(带破折号)。有什么建议吗?
最佳答案
double pow (double base, double exponent);
pow()返回 double
但在被调用函数中您收到的值为 int
。
尝试像这样向下转型:
integers[i] = quotient(remainder(input, (int)pow(10, 6 - i)),
^^^
(int)pow(10, 5 - i));
^^^
说明:math.h
还有一个名为remainder
的函数,
extern double remainder _PARAMS((double, double));
因此,当您调用 remainder(int&, double)
时,编译器无法检测编译器将执行哪个 remainder()
。
关于C++ 分隔整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31239098/