【发布时间】:2013-06-20 12:51:19
【问题描述】:
所以我有一些代码可以通过将“理想”屏幕的大小除以用户屏幕的大小来将图形缩放到用户屏幕的大小。她的代码是我正在做的事情的代码 sn-p:
public void setScaleFactor(GameContainer ui) {
scaleFactorWidth = 2880 / ui.getWidth();
scaleFactorHeight = 1800 / ui.getHeight();
System.out.println("Screen measured as: "
+ Integer.toString(ui.getWidth()) + "x"
+ Integer.toString(ui.getHeight()));
System.out.println("Scale factors are: "
+ Double.toString(scaleFactorWidth) + " "
+ Double.toString(scaleFactorHeight));
textScale = (scaleFactorWidth + scaleFactorHeight) / 2;
System.out.println("Text scale is: " + Double.toString(textScale));
}
现在,如果我在我的计算机上运行它(屏幕分辨率为 1440x900 的 Mac Book pro),结果是“scaleFactorWidth”设置为 2.0,“scaleFactorHeight”设置为 2.0,这是预期的,因为我的屏幕正好是目标大小的一半。但是,如果在具有不同分辨率屏幕的计算机上运行此代码,那么 scaleFactors 似乎会四舍五入,我在 1024x600 的屏幕上进行了测试,并且“scaleFactorWidth”设置为 2.0,“scaleFactorHeight”设置为 3.0 当它应该一直是 2.8125 x 3.0。
这是java中的某种舍入错误吗?如果是,我该如何解决?
编辑:感谢所有的帮助,我意识到我非常愚蠢,因为我需要做的就是将 .0 添加到 2880 和 1800。
【问题讨论】:
-
2880 / ui.getWidth();返回一个整数。试试2880.0?我也不确定 ui.getWidth 返回什么。
-
scaleFactorWidth和ui.getWidth()的类型是什么?如果scaleFactorWidth是double而ui.getWidth()是int,则使用2880.0 / ui.getWidth();
标签: java double scaling rounding division