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

标签 c floating-point double

我正在尝试获取一个精确到小数点后 3 位的 float 变量以进行比较计算。我正在尝试下面的方法,但它不起作用。我不明白为什么不可以,所以请有人告诉我哪里出错了。

此代码的输出是 b = 10000.050617,bb = 10000050 和 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;

最佳答案

当你表演时

 fbb = bb/1000;

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

尝试

fbb = ((double)bb)/1000.000;

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

关于c - 为什么这段简单的代码不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18913903/

相关文章:

c - 将 double 映射到 long 数字的函数

javascript - 如何将多个纹理发送到 WebGL 中的片段着色器?

c - ncurses 位 block 传输/缓冲区

c++ - 在 Windows 上使用 openssl 库生成随 secret 钥/数据

c - memcpy 到动态存储结构是否安全?

java - ULP计算浮点

java - 归一化双 vector 不是单位长度到机器精度

c - 在 C 中使用管道传递多个数据 block

javascript - 如何在 JavaScript 中将字符串转换为 float 而不需要 parseFloat 或转换?

C++:将 double 列表与一些无效值进行比较(QNAN)