float 类型由 1 位符号位、8 位指数和 23 位尾数构成,能表示大约 6-7 位十进制有效数字;
double 类型由 1 位符号位、11 位指数和 52 位尾数构成,能表示大约 15-16 位十进制有效数字;
long double 类型提供比 double更高的精度和范围,具体大小和实现因平台而异,精度约 18-19 位十进制有效数字。
这里使用 floorl(long double) 和 sqrtl(long double) 函数以实现:
#include <stdio.h>
#include <math.h>
int main() {
int n;
scanf("%d\n", &n);
long long b;
while (n--) {
scanf("%lld\n", &b);
printf("%lld\n", (long long)floorl(sqrtl(b)));
}
return 0;
}

京公网安备 11010502036488号