我如何使用compareto作为double,我想把它变成一个int?
一个例子会很好。我一直在搜索java api。
是否可以使用带有String toString方法的if和else语句?我的特殊情况一直在崩溃。
我是java的总菜鸟我猜我一直在读书学习
答案 0 :(得分: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时会有更多的开销。
关于你问题的第二部分,我并不真正理解你的问题/意图是什么。请尝试澄清它。
答案 1 :(得分:1)
你可以尝试这样的事情
Double d = 10.0;
Integer i = 10;
d.compareTo(i.doubleValue());
或
i.compareTo(d.intValue());
我不确定你需要哪一个。
答案 2 :(得分:1)
您不希望转换为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
)
答案 3 :(得分:0)
我只能猜测你的具体要求。你应该尝试更清楚地改进它们。
如果你想比较双打和整数,可能很难。你有两个选择。
one:将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);
}