如何将 float 转换为 int?

How can I convert float to int?

cube1.name = string.Format("Terrain_{0}_{1}", 
    (int)Terrain.activeTerrain.transform.position.x + tilePositionInLocalSpace.x, 
    (int)Terrain.activeTerrain.transform.position.z + tilePositionInLocalSpace.y);

尝试为 int 施放它,但变化不大。 每个立方体的名称仍然是例如:Terrain_6.5_5.5。但我希望名称为 Terrain_6_5

tilePositionInLocalSpacevector3类型,x都是float类型。

您需要明确转换它:

cube1.name = string.Format("Terrain_{0}_{1}",
Convert.ToInt32(Terrain.activeTerrain.transform.position.x + tilePositionInLocalSpace.x),
Convert.ToInt32(Terrain.activeTerrain.transform.position.z + tilePositionInLocalSpace.y));

您需要将两者都转换为 int,因为现在您要添加 intfloat,这当然会导致 float。尝试:

cube1.name = string.Format("Terrain_{0}_{1}", (int)(Terrain.activeTerrain.transform.position.x + tilePositionInLocalSpace.x), (int)(Terrain.activeTerrain.transform.position.z + tilePositionInLocalSpace.y))

您刚刚遇到了一个优先级问题。你有:

(int) x + y

相当于

((int) x) + y

... 然后将转换的结果提升回 float 以执行浮点加法。只需将转换应用于整个结果即可:

(int) (x + y)

当然,xy 是原始代码中相当长的表达式。为了可读性,我将提取两个值以分隔局部变量,因此您将拥有:

int sumX = (int) (Terrain.activeTerrain.transform.position.x + tilePositionInLocalSpace.x);
int sumY = (int) (Terrain.activeTerrain.transform.position.z + tilePositionInLocalSpace.y);
cube1.name = string.Format("Terrain_{0}_{1}", sumX, sumY);

或者更好:

var position = Terrain.activeTerrain.transform.position;
int sumX = (int) (position.x + tilePositionInLocalSpace.x);
int sumY = (int) (position.z + tilePositionInLocalSpace.y);
cube1.name = string.Format("Terrain_{0}_{1}", sumX, sumY);

直接把加法的结果:

(int) (x + y);

然后string.format ()...

我只想指定格式的位数。输入格式即可。

像这样:

// here                                |     |  
cube1.name = string.Format("Terrain_{0:0}_{1:0}", 
    Terrain.activeTerrain.transform.position.x + tilePositionInLocalSpace.x, 
    Terrain.activeTerrain.transform.position.z + tilePositionInLocalSpace.y);