java比较从double到int tostring方法

时间:2011-04-05 20:36:59

标签: java string compareto

我如何使用compareto作为double,我想把它变成一个int?

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

是否可以使用带有String toString方法的if和else语句?我的特殊情况一直在崩溃。

我是java的总菜鸟我猜我一直在读书学习

4 个答案:

答案 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对象。 Doublejava.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);
}