将int转换为float

Jad*_*ade 0 c visual-c++

我试图将一个int添加到浮点数.我的代码是:

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;
 }
Run Code Online (Sandbox Code Playgroud)

输出如下:

(float)millit + dmillit:5085840.000005
dbuffer:5085840.000000

为什么会有区别?我也注意到如果我改变dmillit = .5,那么两个输出都是相同的(5085840.5),这就是我所期望的.为什么是这样?谢谢!

Phi*_*ert 7

(float)millit + dmillit评估为double值.当您打印该值时,它会正确显示,但是当您将其存储在float变量中时,精度会丢失.