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)
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)
当你表演
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
.