【发布时间】:2012-06-16 02:21:00
【问题描述】:
谁能帮我解释为什么 x2 打印为零。 我猜由于浮点表示 X1 被四舍五入,有没有办法保持进动。
long double x1, x2;
x1= 0.087912088; // Note: 360/4095 = 0.087912088
x2 = 360/4095;
printf("%Lf, %Lf \n",x1, x2);
结果:
x1 =0.087912
x2= 0.000000
【问题讨论】:
-
克里斯和列文感谢您的回复。有没有办法增加岁差。
-
要实际存储更多数字,您需要一个任意精度的库。正如 Levon 所说,或者在 C++ 中使用
std::setprecision,可以只显示更多内容。 -
@chris 我正在研究 QNX 嵌入式系统上的低级电机控制代码是 C。对于 c++ 代码,我会牢记这一点。
-
为了让其他人在未来不那么混淆,请考虑以下两个字典条目:precession、precision。
-
感谢@Alex 指出这一点。
标签: c floating-point floating-accuracy