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