因此,我有一些代碼將圖形縮放到用戶屏幕的大小,方法是將「理想」屏幕的大小除以用戶屏幕的大小。她是我在做什麼的代碼片段:Java對四分之一的結果進行四捨五入,當它不應該爲
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));
}
現在,如果我在我的電腦(Mac的親書與1440的屏幕分辨率)上運行這個出落得是「scaleFactorWidth」設置爲2.0和「scaleFactorHeight」被設置爲2.0,這是預期的,因爲我的屏幕恰好是目標大小的一半。但如果在具有不同分辨率屏幕的計算機上運行此代碼,那麼scaleFactors似乎會四捨五入,我在1024x600的屏幕上運行測試,「scaleFactorWidth」設置爲2.0「scaleFactorHeight」設置爲3.0已經是2.8125 x 3.0。
這是在Java內的某種舍入錯誤,如果是這樣,我該如何解決它?
編輯:感謝所有幫助,我已經意識到我是非常愚蠢的,因爲所有我需要做的是添加1.0至2880和1800
2880/ui.getWidth();返回一個整數。試試2880.0?我也不確定ui.getWidth返回什麼。 – kingdamian42
'scaleFactorWidth'和'ui.getWidth()'的類型是什麼?如果'scaleFactorWidth'是'double'並且'ui.getWidth()'是'int',則使用'2880.0/ui.getWidth();' – johnchen902