我的意图是取整一个值,但输出错误

      float travellingEmptyDist = 2.05;
travellingEmptyDist = round(travellingEmptyDist * 10); // gives value 21.0
travellingEmptyDist = travellingEmptyDist/ 10.0; // gives wrong value 2.09999, expecting 2.1


有什么办法纠正它吗

最佳答案

我建议看这个视频
Computerphile: Floating Points

在不涉及太多技术细节的情况下,它将为您提供一个非常简单的概述,说明为什么浮点固有地不精确。我也有偏见,因为我爱发烧友。

您需要问自己,您真的需要0.00001的额外精度吗?如果您确实需要更高的精度,请使用double而不是float,但是即使那样,您仍然会有舍入错误。

如果您需要更高的精度,则必须使用第三方精度算术库。我从不需要它,但根据Google搜索结果,GMP似乎很受欢迎。

10-06 05:52