#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;
}
这些数字必须作为字符串输入和输出。
要从
__float128/ 转换为字符串,可以分别使用函数strtoflt128和quadmath_snprintf。但前提是您使用的是 GCC,并且您可以使用quadmath库。例子:
要打印的小数位数由变量
prec和输出格式字符串中点之前的数字给出%.0Qf。为了构建项目,不要忘记指定链接器选项
lquadmath。