0

ScriptEngine を使用して、文字列で指定された計算を実行しています。以下のような簡単なプログラムを試しました。

 public static void main(String[] args){
    ScriptEngineManager mgr = new ScriptEngineManager();
    ScriptEngine engine = mgr.getEngineByName("JavaScript");
    Float f;
    try {
        f = new Float(engine.eval("1340984972921+7200000").toString());
        System.out.println(f.longValue()+"");
    } catch (Exception e){}
  }

これは 1340992126976 の出力を与えますが、正しい答えは 1340992172921 です

これは、かなり大きな整数では機能するように見えますが、長い値では失敗します。それらはタイムスタンプであり、そのように使用したいので、長い値として使用したいです。何がこれを機能させることができるかについてのアイデアはありますか?

ありがとう。

4

1 に答える 1

2

データ型を からFloatに変更してみてくださいDouble。精度の問題だと思います。

于 2012-06-29T18:42:54.773 に答える