你不能使用%Qf
中的说明符scanf
,您应该输入高精度数字作为字符串,然后使用strtoflt128
转换。你也不能使用%Qf
中的说明符printf
, use quadmath_snprintf
来转换一个__float128
将浮点数转换为字符串,然后使用printf
with %s
说明符来显示它。这是一个例子。
#include <stdio.h>
#include <quadmath.h>
int main()
{
char s[256], t[256], mt[256];
printf("enter 3 values for s, t and mt:\n");
scanf("%s %s %s", s, t, mt);
__float128 qs = strtoflt128(s, NULL);
__float128 qt = strtoflt128(t, NULL);
__float128 qmt = strtoflt128(mt, NULL);
quadmath_snprintf(s, 256, "%Qf", qs);
quadmath_snprintf(t, 256, "%Qf", qt);
quadmath_snprintf(mt, 256, "%Qf", qmt);
printf("%s %s %s", s, t, mt);
return 0;
}
运行程序:
输入 s、t 和 mt 的 3 个值:
3.4 4.5 5.6(输入)
3.400000 4.500000 5.600000