两个数相除总是等于零

本文关键字:等于零 两个 | 更新日期: 2023-09-27 17:53:02

在我的Xna游戏中,我试图让我的游戏场地缩放到它正在运行的屏幕。为了做到这一点,我使用比例来找到实际窗口相对于游戏场缩放的百分比。为此,我将实际宽度除以虚拟宽度:

float _percent = _realViewport.Width / this._viewport.Width;
但是,在_percent变量中,

总是得到0。我在代码的那一行设置了一个调试停止点,并分析了变量。this._viewport。宽度等于640,和_realViewport。宽度等于1280。所以,用我的计算器,640/1280应该等于0.5,但在我的代码中,我总是得到0,而不是0.5。它为什么这样做?

两个数相除总是等于零

因为整数除法截断(XNA的Viewport类型具有整数宽度和高度属性),而640/1280为0.5,截断为0。

如果要进行浮点除法,则将其中一个值强制转换为浮点数:

float _percent = _realViewport.Width / (float)this._viewport.Width;

试试这个float _percent = _realViewport.Width * 1.0/ (float)this._viewport.Width;,通过乘以1.0,整数将自动转换为浮点数