我想使用双精度,最多只有小数点后两位。即,它将存储最多 2 个小数位,如果比较两个 double 值,则比较应仅基于前 2 个小数位。如何实现这样的事情呢?我的意思是存储、比较,一切都将仅基于小数点后两位。剩下的地方可能不同,大于,小于,无所谓。
EDIT我的价值观并不大。最大范围为 0 到 5000。但我必须多次乘以 Cos A、Sin A,其中 A 的值在程序过程中不断变化。
EDIT在我的程序中查看一辆汽车以特定速度移动,例如 12 m/s。现在,每隔几分钟,汽车就会改变方向,就像选择一个新角度并开始沿着该方向直线移动一样。现在每次它移动时,我都必须找出它在地图上的 x 和 y 位置。这将是 currentX+velocity*Cos A 和 currentY+Velocity*Sin A。但由于这种情况经常发生,随着时间的推移会出现很多累积误差。如何避免这种情况?
比较浮点值是否相等应始终使用某种形式的 delta/epsilon 比较:
if (Abs(value1 - value2) < 0.01 )
{
// considered equal to 2 decimal places
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)