我正试图给浮点数加一个整数。我的代码是:

int main() {
   char paus[2];
   int millit = 5085840;
   float dmillit = .000005;
   float dbuffer;

   printf("(float)milit + dmillit: %f\n",(float)millit + dmillit);
   dbuffer = (float)millit + dmillit;
   printf("dbuffer: %f\n",dbuffer);

   fgets(paus,2,stdin);
   return 0;
 }

输出如下:
(浮子)毫+毫:5085840.000005
缓冲区:5085840.000000
为什么有区别?我还注意到,如果更改dmillit=.5,那么两个输出都是相同的(5085840.5),这是我所期望的。这是为什么?谢谢!

最佳答案

你试图使用的精度对于一个浮点数来说太大了。在printf函数中,它被转换成一个要打印的double。
请参阅IEEE 754 float calculator页以更好地理解这一点。

关于c - 将int转换为float,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3587442/

10-16 05:00