浮点指向int而不转换为int

时间:2013-04-30 19:12:11

标签: c# c

我在采访中遇到了这个问题,我不知道如何用一个来帮助我解决这个问题

“编程截断给定的浮点值(例如16.25 = 16)。你不应该将float值赋给整数&然后将int值复制到float ...应用不同的逻辑。”

3 个答案:

答案 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值,但这只是工程设计。算法很健全。实际上,你可能会做类似的事情,但有分而不是减法,这会大大加快它的速度。