2

doubleに対してcomparetoを使用するにはどうすればよいですか?それをintに変換したいのですか?

例はいいでしょう。私はJava APIを検索しています。

また、String toString メソッドで if および else ステートメントを使用することは可能ですか? 私は特別な場合にクラッシュし続けました。

私はJavaの完全な初心者です。学ぶために常に読んでいると思います

4

4 に答える 4

3

整数を double と比較する場合は、整数を double に変換する必要があります。int は double が保持できるすべての値を保持できないため、これは逆に機能しないことに注意してください。値は切り捨てられます。

double d = 12.3;
return (int)d;

戻り12ます!double は int よりも大きくても小さくても値を保持できます

double d = 1.337E42
return (int)d;

戻ります2147483647!その間には何桁もの桁があります。したがって、これが起こらないように、常に int を double に変換してください。

比較のために次のコードを使用できます。

int compare(double d, int i) {
   return new Double(d).compareTo(new Double(i));
}

ただし、Double はオブジェクトでありプリミティブ型ではないため、Double は double とは異なることに注意してください。そのため、Double または int を使用する場合と比較して、Double を処理するときのオーバーヘッドが大きくなります。

あなたの質問の 2 番目の部分については、あなたの質問/意図がよくわかりません。はっきりさせてみてください。

于 2011-04-06T20:48:58.917 に答える
1

String数値ではなく辞書式に数値を比較するため、に変換したくありません。

あなたの質問は、「compareTo()doubles のメソッドを作成するにはどうすればよいですか?」という意味に解釈します。

また、これを使用して double のデータ構造を実装していると思います。

これが私がそれについて行く方法です。データ構造を構築するときは、それをDoubleオブジェクトとして構築します。 プリミティブをボックス化するパッケージDoubleの組み込みクラスです。java.langdouble

次に、Java はそれらをその型に自動的にキャストします。

クラスをデータ構造の定義型として使用する理由はDouble、その組み込みメソッドを使用できるようにするためですcompareTodoubleプリミティブ データ型にメソッドを含める方法はありませんcompareTo

たとえば、開始に役立つコードを次に示します。

TreeMap <Double, String> myDoubleMap = new TreeMap <Double, String> (10);
for (int i = 0; i < 10; i++)
    myDoubleMap.put ( Math.sqrt( 10.0 * i) , "" + i);


System.out.println(myDoubleMap);

java.util.TreeMap(この例を実行する場合は必ずインポートしてください)

于 2011-04-05T23:29:30.377 に答える
1

あなたはこのようなことを試すことができます

    Double d = 10.0;
    Integer i = 10;
    d.compareTo(i.doubleValue());

また

    i.compareTo(d.intValue());

どちらが必要かわかりません。

于 2011-04-05T20:39:28.063 に答える
0

私はあなたの正確な要件を推測することしかできません。それらをもう少し明確に洗練するようにしてください。

doubleとintを比較したい場合、それは難しいかもしれません。2つのオプションがあります。

1つ:doubleをintにキャストし、比較します

int compare(double d, int i) {
    int dint = (int)d;
    return Integer.compare(dint,i);
}

int compare(int i, double d) {
    int dint = (int)d;
    return Integer.compare(i,dint);
}

2:intをdoubleにキャストし、比較します

int compare(double d, int i) {
    double idouble = (double)i;
    return Double.compare(d,idouble);
}

int compare(int i, double d) {
    double idouble = (double)i;
    return Double.compare(d,idouble);
}
于 2011-04-05T20:42:37.823 に答える