为什么java中的1200/1080 = 1?

zba*_*rni 0 java integer libgdx

我使用libGDX在Java中创建了一个应用程序.我需要使用屏幕高度和1080的比例.所以我创建了一个名为rh的浮点数,它等于Gdx.graphics.getHeight()/ 1080

float rh = (Gdx.graphics.getHeight()/1080);
Run Code Online (Sandbox Code Playgroud)

就我而言,我的屏幕高度为1200像素.所以在我的情况下,rh应该是1.111111 ......但rh变为1.如果屏幕的高度低于1080像素,则rh为0.为什么会发生这种情况我该怎么办?

请帮忙!提前致谢.

PS:Gdx.graphics.getHeight()以nr像素获取屏幕的高度.

Sar*_*tal 10

试试这个:

float rh = (Gdx.graphics.getHeight()/(float)1080);
Run Code Online (Sandbox Code Playgroud)

问题是你的getHeight()方法会返回一个int,当java除以两个整数时,结果是一个int,之后,java将该值初始化为左边的变量.


Era*_*ran 7

除以2之后int,执行整数除法,结果为a int.如果将结果存储在float/ double变量中,则将其转换为float/ double但值仍然是int(即没有分数).

为了执行浮点除法,您要划分的至少一个数字必须是a floatdouble.如果两者都是int,你可以投下其中一个:

float rh = Gdx.graphics.getHeight()/(float)1080;
Run Code Online (Sandbox Code Playgroud)

要么

float rh = (float)Gdx.graphics.getHeight()/1080;
Run Code Online (Sandbox Code Playgroud)

或没有铸造

float rh = Gdx.graphics.getHeight()/1080.0;
Run Code Online (Sandbox Code Playgroud)

  • 不重要但是1080f :) (2认同)