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()
将由编译器执行。