разделение числа с плавающей точкой

Я подаю число в консоле 1.2
Как результат я должен получить

1        2

Если я подам число 124.55874
То я получаю

124        55874

То есть моя задача выписывать целую часть цифр и часть с цифр после точки. И мой код работает, но если я подаю например число 12.12, то получаю:

12        1.2+e07

Из за чего такие результаты? Из-за неточного бинарного представления некоторых чисел?

    double num, cN;
    std::cout << "num = ";
    std::cin >> num;
    while (num != 0.0) {
        std::cout << long (num) << "\t";
        cN = long (num);
        num = num - cN;
        for (int i = 0; i < 4; i++) {
            num = num * 100;
        }
        while (long (num) % 10 == 0) {
            num = num / 10;
        }
        std::cout << num << "\n";
        std::cout << "num = ";
        std::cin >> num;
    }

Ответы (0 шт):