我有這個代碼,目標是,拿一些數字,並給我另一個數字。很簡單。GWT編譯器:添加兩個數字創建一個字符串
private final int height = 5;
private double interpolateDoubleProperty(
int heightAtLower, int heightAtHigher, //4, 10
double lowValue, double highValue) //1, 0
{
double lowToHighDelta = heightAtHigher - heightAtLower; // 6 = 10 - 4
double lowToThisDelta = (double)this.height - heightAtLower; // 1 = 5 - 4
double lerpRatio = lowToThisDelta/lowToHighDelta; // 0.17 = 1/6
double valueDelta = highValue - lowValue; // -1 = 0 - 1
double increment = lerpRatio * valueDelta; // -0.17 = 0.17 * -1
double toReturn = lowValue + increment; // 0.83 = 1 + -0.17
GWT.log("interpolated value = " + toReturn);
return toReturn;
}
但是,我得到的返回值很差。對於這種情況(見輸入值評論)的GWT日誌輸出是:
插值= 1-0.16666666666666666
,告訴我說:「toReturn」是越來越像一個字符串處理,它的值等於到「lowValue」和「increment」的連接。
這是GWT,所以無論我在這裏編寫的Java代碼是被編譯成JS,並且在某些時候該值被錯誤地轉換爲字符串。什麼可能導致這個?無論如何要解決它?我正在使用GWT v2.6。
承擔命名,lowValue和highValue,實際上應該分別爲1和0。
你是直接從JS調用'interpolativeDoubleProperty'嗎? (即從本地JS調用,而不是GWT編譯的JS)。 – Andrei
我沒有看到GWT 2.8.0的這種行爲。 '內插值= 0.8333333333333334'。你可以嘗試更新嗎?另外,請嘗試使用完整版本的輸出進行編譯,您可以看到JS已經制作完成,並且可能瞭解正在發生的事情。 – Stik
我只從GWT編譯的JS中調用interpolateDoubleProperty – user3689186