我将 SFML 库用于带有移动对象的游戏应用程序。在游戏中,我有一个球对象,我需要确保每次移动球在 Y 轴上的偏移量至少为 0.1(或 -0.1)
这是我现在使用的代码:
if (offset.y < 0.0 && offset.y > -0.1) offset.y = -0.1;
if (offset.y > 0.0 && offset.y < 0.1) offset.y = 0.1;
有没有更简单/更漂亮的方法来实现它?
编辑: 正如评论所指出的那样,代码应该包含 0.0 个案例
if (offset.y < 0.0 && offset.y > -0.1) offset.y = -0.1;
if (offset.y >= 0.0 && offset.y < 0.1) offset.y = 0.1;
最佳答案
只需使用 std::abs()
和 std::copysign()
:
if (std::abs(offset.y) < .1)
offset.y = std::copysign(.1, offset.y);
以任何其他方式保留零的符号都很困难。
但是,请考虑您是否不能改用积分模型; .1
不能精确表示为二进制 float 。
关于c++ - 根据符号舍入 float 的最简单方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56693802/