高中生
最后登录1970-1-1
在线时间 小时
注册时间2016-1-10
|
今天在做程序测试的时候,发现一个小小的疑惑,希望大家能帮忙讨论下。在程序中需要将float型数据取整数,但是对于不同的float型数据转换的结果却是不一样的,下面将代码贴出来
int8_t a=(int8_t)h;
printf("a=%d\r\n",a);
float32_t b=-194.667953f;
int8_t i=(int8_t)b;
printf("i=%d\r\n",i);
下面是串口助手打印结果:
a=-1
i=62
很明显i=62不是我想要的结果;紧接着我把代码改成如下所示,代码如下;
float32_t h=-1.47f;
int16_t a=(int16_t)h;
printf("a=%d\r\n",a);
float32_t b=-194.667953f;
int16_t i=(int16_t)b;
printf("i=%d\r\n",i);
下面是串口打印的结果:a=-1
i=-194
是符合我的预期的,随后我将int_16改为int32_t也得到了我想要的结果。但我查阅了资料后发现浮点数转换成整形数是直接舍去小数的,为何在这里得到了不同的结果,还请各位指正 |
|