Ввод/Вывод __float128 C++

370
24 октября 2017, 02:41

Подскажите как в C++ вводить __float128, потом вывести без знаков после точки

Answer 1

Вводить и выводить такие числа надо в виде строк.

Для перевод __float128 из/в строку можно использовать функции strtoflt128 и quadmath_snprintf, соответственно. Но это при условии, что вы используете GCC и вам доступна библиотека quadmath.

Пример:

#include <iostream>    
#include <quadmath.h>
using namespace std;
int main()
{
    int prec = 0;
    string format("%.0Qf");
    string in;
    cin >> in; // считывание числа в виде строки
    // перевод из строки в __float128
    __float128 r = strtoflt128(in.c_str(), NULL);
    r = sqrtq(r);  // выполнение некоторых операций с числом
    // подсчёт размера выходной строки, с учётом форматирования и точности 
    int n = quadmath_snprintf(NULL, 0, format.c_str(), prec, r);
    if (n > 0) {
        // выделение памяти под строку
        string out(n + 1, '\0');
        // перевод __float128 в строку, с учётом форматирования и точности
        quadmath_snprintf(&out[0], out.capacity(), format.c_str(), prec, r);
        // вывод результата в консоль
        cout << out << endl;
    }
    return 0;
}

Число знаков после запятой, которые будут напечатаны, задаётся переменной prec и числом перед точкой в строке форматирования вывода %.0Qf.

Чтобы проект собрался, не забудьте указать линковщику опцию lquadmath.

READ ALSO
Несколько init-expression в for

Несколько init-expression в for

В синтаксисе for

205
Ошибка при подключении файла

Ошибка при подключении файла

Добрый деньПытаюсь решить одну задачу, надо, чтобы читались данные из файла

358
Необычный ввод строки [требует правки]

Необычный ввод строки [требует правки]

Есть задача: вводится просто строка с цифрами и пробелами и задача вычленить из неё цифры для последующих с ними манипуляций(желательно в int)Например...

369