Unity - 从浮点数中截断所有小数(不是通过四舍五入)

Unity - truncate all decimals from a float (not by rounding)

我有一个 C# 脚本,我想在其中取一个浮点值,删除小数点后的所有内容,并得到剩余数字的整数。

例如2.5469 最终将是 [int]2。 例如546.5934 应该是 [int]546.

我正在使用 int 进行其他计算,所以我不能只使用 String 格式。 Math.Roundf 也不行,因为我不想让它四舍五入。

它用于俄罗斯方块克隆,我正在尝试创建允许生成游戏块的 X 轴值范围。我想一个简单的方法是在我的场景中绘制游戏区域,通过用 sprite 定义它,然后拉出这些 sprite 的 transform.position.x 值来找到该区域的范围。这就是为什么我不想使用带小数的浮点数。

例如如果我的右边界在 10.25 的 transform.position.x 处,而左边界在 -10.6 的 transform.position.x 处,那么我希望碎片能够在以下任何位置生成:[-8、-7、-6、 ..., 0, 1, 2, ... 8]。我认为这将比让它们以 -8 到 8 之间的任何可能的浮点值产生更干净的体验。

因此,为了获得该范围,我计划从 10.25 和 -10.6 取 10 和 -10,add/subtract 2(以确保生成的棋子不会与游戏区域的边缘重叠) , 然后在该范围内拉取一个随机整数作为下一个生成的块的 x 位置。

不幸的是,我找不到从 10.25 得到 10 或从 -10.6 得到 -10 的简单方法。

最简单的解决方案就是将边界设置为 x 10.0 和 x -10.0。但是,我想要一个边界不必位于此类特定坐标的解决方案,即允许将精灵放置在 10.12 的 x 处并在计算之前从 transform.x.position 的浮点值截断小数的解决方案进一步。

您可以使用 Mathf.FloorToInt or casting to int. If you want to know which is more performant, check this .