我如何将 compareto 用于 double 并且我想将其变成 int?
一个例子会很好。我一直在搜索java api。
是否可以将 if 和 else 语句与 String toString 方法一起使用?我的一直因特殊情况而崩溃。
我对java完全是个菜鸟,我想我一直在阅读以学习
如果要将整数与双精度数进行比较,则需要将整数转换为双精度数。请注意,这不会反过来工作,因为 int 不能保存 double 可以的所有值: Values will be round down
double d = 12.3;
return (int)d;
会回来的12
!并且 doubles 可以保存比 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 时会有更多的开销。
至于你问题的第二部分,我真的不明白你的问题/意图是什么。请尝试澄清它。
你可以试试这样的
Double d = 10.0;
Integer i = 10;
d.compareTo(i.doubleValue());
或者
i.compareTo(d.intValue());
我不确定你需要哪一个。
您不想转换为,String
因为这会按字典顺序而不是按数字比较数字。
我会将您的问题理解为“如何compareTo()
为双打创建方法?”
我还认为您正在使用它来实现双打的数据结构。
这就是我将如何去做。当你构造一个数据结构时,你会将它构造为一个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转换为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);
}
二:将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);
}