Страницы

Поиск по вопросам

пятница, 12 июля 2019 г.

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

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


Ответ

Вводить и выводить такие числа надо в виде строк.
Для перевод __float128 из/в строку можно использовать функции strtoflt128 и quadmath_snprintf, соответственно. Но это при условии, что вы используете GCC и вам доступна библиотека quadmath
Пример:
#include #include
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

Комментариев нет:

Отправить комментарий