为什么这段简单的代码不起作用?

Iai*_*nGM 0 c floating-point double

我试图将浮动变量精确到3个小数点进行比较计算.我正在尝试下面的方法,但它不起作用.我不明白为什么不,所以请有人告诉我哪里出错了.

这段代码的输出是b = 10000.050617, bb = 10000050 and fbb = 10000.000.我希望fbb为10000.050.

int bb; double m,n,p,q,b,t,u,fbb;

m=24.161, n=57.695, p=67.092, q=148.011;
t=p-m; u=q-n;
b=t*t+u*u; bb=b*1000; fbb=bb/1000;

printf("b=%.6lf,bb=%i,fbb=%.3lf\n",b,bb,fbb);

return 0;
Run Code Online (Sandbox Code Playgroud)

Yu *_*Hao 5

bb是一个int,所以bb / 1000将遵循整数除法.将操作数中的一个或两个更改为a double.最简单的方法是:

fbb = bb / 1000.0;       //type of 1000.0 is double
Run Code Online (Sandbox Code Playgroud)

要么

fbb = (double)bb / 1000
Run Code Online (Sandbox Code Playgroud)


Swa*_*and 5

当你表演

 fbb = bb/1000;
Run Code Online (Sandbox Code Playgroud)

它将操作视为int/int并返回int

尝试

fbb = ((double)bb)/1000.000;
Run Code Online (Sandbox Code Playgroud)

它将被视为(double)/(double)并返回double.