我在采访中遇到了这个问题,我不知道如何用一个来帮助我解决这个问题
“编程截断给定的浮点值(例如16.25 = 16)。你不应该将float值赋给整数&然后将int值复制到float ...应用不同的逻辑。”
答案 0 :(得分:3)
如果数字为正数:
#include <math.h>
printf("%f\n", floor(16.85));
或正面和负面数字:
printf("%f\n", trunc(16.85));
答案 1 :(得分:3)
看看这个会不会。
#include<stdio.h>
int main()
{
float num=16.25;
int x;
char str[10];
sprintf(str,"%f",num);
sscanf(str,"%d",&x);
printf("The number now is %d",x);
}
答案 2 :(得分:2)
如果您丢弃所有“转换为字符串”类型的答案,并完全专注于数学运算,您可以尝试这个非常低效的过程:
float Truncate(float n) {
float r = 0.0
if(n > 0.0) {
while(n > 0.0) {
n -= 1.0;
r += 1.0;
}
} else {
while(n < 0.0) {
n += 1.0;
r -= 1.0;
}
}
return r;
}
可能需要一百年才能完成更大的N值,但这只是工程设计。算法很健全。实际上,你可能会做类似的事情,但有分而不是减法,这会大大加快它的速度。