私はこのコードを持っています、目標はいくつかの数字を取って、別の番号を教えてください。簡単に。GWTコンパイラ:2つの数字を追加すると文字列が作成されます
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のログ出力がある(入力値のためのコメントを参照してください):=
補間値文字列のように扱わなっている「toReturn」と言われます1から0.16666666666666666
を、それは値が等しいです"lowValue"と "increment"の連結に変換します。
これはGWTなので、ここで書いているJavaコードはJSにコンパイルされていて、ある時点で値が誤って文字列にキャストされています。これを引き起こす原因は何ですか?とにかくそれを解決するには?私はGWT v2.6を使用しています。
名前付けがlowValueとhighValueで、実際にはそれぞれ1と0であるはずです。
JSから直接interpolateDoublePropertyを呼び出していますか? (つまり、GWTコンパイルされたJSとは対照的にネイティブJSからの呼び出し)。 – Andrei
GWT 2.8.0ではこの動作が表示されません。 「補間値= 0.8333333333333334」となる。あなたは更新しようか?また、出力の完全なかなりのバージョンでコンパイルしてみてください、あなたはJSがどのように生産されているかを知ることができ、おそらくそのようなことが起こっているのか理解することができます。 – Stik
私はinterpolateDoublePropertyをGWTコンパイル済みJSからのみ呼び出しています – user3689186