C++ 分隔整数

标签 c++ integer

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/

相关文章:

javascript - 正则表达式 - 数量字段

c++ - OpenCV - 错误 C2244

c++ - 剥离 linux 共享库

c++ - Boost:如何将 "true"或 "1"之类的字符串转换为 bool true,将 "0"或 "false"转换为 bool false?

c++ - 为什么不能像这样 : 在 C++ 中动态声明一个对象数组

c - 在 C 中如何将 int 转换为字符串?

c++ - 使用显式模板参数调用流运算符模板 oerload

java - 如何设置输入整数的限制?

C编程,这个大数组声明为什么会产生段错误?

java - 如何在一种方法中调用另一种方法中的整数?