0

私はこのコードを持っています:

Long dval = new Long((new Date()).getTime());
System.out.println("ogval:"+dval);
Double dd = (double)dval;
System.out.println("dval:"+dd);

出力は次のとおりです。

ogval:1381490769636
dval:1.381490769636E12

値を Double に変換すると、小数点が追加されます。型キャストして値をそのまま double で取得することはできますか?

望ましい出力は次のようになります。

ogval:1381490769636
dval:1381490769636

引数が double 値のみを受け入れる関数があります。タイムスタンプを渡そうとすると、メソッド内で 10 進数値が渡されます。一部のパッケージの組み込み関数であるため、関数を編集できません。

4

4 に答える 4

2

問題は、使用しているタイプではなく、適用している形式にあります。string + double現在、暗黙的に を呼び出すため、デフォルトの形式が使用されていDouble.toStringます。必要に応じて、または Java が提供するその他のフォーマット方法を使用して、別のフォーマットを強制することができます。doubleStringprintf

System.out.printf("dval: %12.0f", dd);

(デモ)

于 2013-10-11T10:42:18.397 に答える
2

DecimalFormat次のように使用します。

    Long dval = new Long((new Date()).getTime());
    System.out.println("ogval:" + dval);
    Double dd = (double) dval;
    DecimalFormat format=new DecimalFormat("##########");
    System.out.println("dval:" + format.format(dd));
于 2013-10-11T10:39:39.953 に答える