gpt4 book ai didi

c# - 浮点值默认为 1 或 0

转载 作者:太空宇宙 更新时间:2023-11-03 19:49:13 25 4
gpt4 key购买 nike

我正在尝试为 Unity 中的 CellSize 计算出一些东西。这是针对 GridLayoutGroup 组件的。我发现用计算器完成后效果非常好:Screen.Width/1280、Screen.Height/720。由于我使用 720p 作为基本分辨率,并且那里的一切看起来都很好,所以我将其用作基本分辨率。 100x100 看起来非常适合 720p 的单元格大小。

例如他们的分辨率是1280:1024它应该出现 (100, 142) 但是它总是出现 (1.0, 1.0)。如果分辨率很小...例如 320x200,它会出现 (0.0, 0.0)。

这是我的代码:

SlotPanel.GetComponent<GridLayoutGroup>().cellSize = new Vector2((Cam.pixelWidth / 1280) * 100, (Cam.pixelHeight / 720) * 100);

Cam 是玩家使用的相机。我尝试的另一个代码是:

SlotPanel.GetComponenet<GridLayoutGroup>().cellSize = new Vector2((Screen.Width / 1280) * 100, (Screen.Height / 720) * 100);

两者都会导致相同的问题。在这一点上,我无法用语言表达我是多么的恼火。我不明白为什么数学是正确的,但它不正确。

最佳答案

Cam.pixelWidth/1280 &c.在整数算术中计算;任何剩余部分都将被丢弃。

重写为 100.0 * Cam.pixelWidth/1280 以确保计算以 float 进行(由于两个整数参数的提升)。还有其他方法,但我发现这个方法最清楚,因为更改第一个系数从一开始就告诉读者你的代码你想做什么。

(如果您要求表达式的类型为单精度浮点类型,则使用 100f 代替 100.0)。

这是使用过多括号实际上有害的情况之一。

关于c# - 浮点值默认为 1 或 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41807654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com