2

我如何将 compareto 用于 double 并且我想将其变成 int?

一个例子会很好。我一直在搜索java api。

是否可以将 if 和 else 语句与 String toString 方法一起使用?我的一直因特殊情况而崩溃。

我对java完全是个菜鸟,我想我一直在阅读以学习

4

4 回答 4

3

如果要将整数与双精度数进行比较,则需要将整数转换为双精度数。请注意,这不会反过来工作,因为 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 时会有更多的开销。

至于你问题的第二部分,我真的不明白你的问题/意图是什么。请尝试澄清它。

于 2011-04-06T20:48:58.917 回答
1

你可以试试这样的

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

或者

    i.compareTo(d.intValue());

我不确定你需要哪一个。

于 2011-04-05T20:39:28.063 回答
1

您不想转换为,String因为这会按字典顺序而不是按数字比较数字。

我会将您的问题理解为“如何compareTo()为双打创建方法?”

我还认为您正在使用它来实现双打的数据结构。

这就是我将如何去做。当你构造一个数据结构时,你会将它构造为一个Double对象。 是封装原语Double的包中的内置类。java.langdouble

然后,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(如果要运行此示例,请确保导入)

于 2011-04-05T23:29:30.377 回答
0

我只能猜测您的确切要求。您应该尝试更清楚地改进它们。

如果你想比较双打和整数,可能很难。你有两个选择。

一:将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);
}
于 2011-04-05T20:42:37.823 回答