除以两个数字总是等于零?

时间:2014-03-25 00:19:14

标签: c# math xna division

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

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

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

2 个答案:

答案 0 :(得分:6)

因为整数除法截断(XNA's Viewport类型具有整数宽度和高度属性),640/1280是0.5,它截断为零。

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

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

答案 1 :(得分:1)

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