doubleに対してcomparetoを使用するにはどうすればよいですか?それをintに変換したいのですか?
例はいいでしょう。私はJava APIを検索しています。
また、String toString メソッドで if および else ステートメントを使用することは可能ですか? 私は特別な場合にクラッシュし続けました。
私はJavaの完全な初心者です。学ぶために常に読んでいると思います
整数を 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 番目の部分については、あなたの質問/意図がよくわかりません。はっきりさせてみてください。
String
数値ではなく辞書式に数値を比較するため、に変換したくありません。
あなたの質問は、「compareTo()
doubles のメソッドを作成するにはどうすればよいですか?」という意味に解釈します。
また、これを使用して double のデータ構造を実装していると思います。
これが私がそれについて行く方法です。データ構造を構築するときは、それをDouble
オブジェクトとして構築します。
プリミティブをボックス化するパッケージDouble
の組み込みクラスです。java.lang
double
次に、Java はそれらをその型に自動的にキャストします。
クラスをデータ構造の定義型として使用する理由はDouble
、その組み込みメソッドを使用できるようにするためですcompareTo
。double
プリミティブ データ型にメソッドを含める方法はありません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
(この例を実行する場合は必ずインポートしてください)
あなたはこのようなことを試すことができます
Double d = 10.0;
Integer i = 10;
d.compareTo(i.doubleValue());
また
i.compareTo(d.intValue());
どちらが必要かわかりません。
私はあなたの正確な要件を推測することしかできません。それらをもう少し明確に洗練するようにしてください。
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);
}