Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java与from double to int tostring方法的比较_Java_String_Compareto - Fatal编程技术网

java与from double to int tostring方法的比较

java与from double to int tostring方法的比较,java,string,compareto,Java,String,Compareto,如何使用compareto来表示double,并将其转换为int 举个例子就好了。我一直在搜索JavaAPI 还可以将if和else语句与String-toString方法一起使用吗?由于特殊情况,我的车一直在撞车 我完全不懂java我想我一直在不断地阅读来学习你可以试试这样的东西 Double d = 10.0; Integer i = 10; d.compareTo(i.doubleValue()); 或 我不知道你需要哪一个。我只能猜测你的确切要求。你应该试着把它

如何使用compareto来表示double,并将其转换为int

举个例子就好了。我一直在搜索JavaAPI

还可以将if和else语句与String-toString方法一起使用吗?由于特殊情况,我的车一直在撞车


我完全不懂java我想我一直在不断地阅读来学习

你可以试试这样的东西

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


我不知道你需要哪一个。我只能猜测你的确切要求。你应该试着把它们提炼得更清楚一点

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

第一:将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 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);
}
第二:将int转换为double,然后比较

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 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);
}

您不希望转换为字符串,因为这将按字典顺序而不是数字顺序比较数字

我将把你的问题理解为,我如何为双打创建一个compareTo方法

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

下面是我将如何着手的。 构造数据结构时,将其构造为双对象。 Double是java.lang包中的一个内置类,用于封装Double原语

然后,java将自动将它们转换为该类型

您希望使用Double类作为数据结构的定义类型的原因是,您可以使用其内置的compareTo方法。无法使基元数据类型双重包含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

如果要将整数与双精度进行比较,则需要将整数转换为双精度。请注意,这不会反过来工作,因为int不能容纳double can的所有值:值将向下舍入

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时会有更多的开销


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

你至少有3个不同的问题。你为什么不发布一些你一直在尝试的代码呢?我正在为学校做一个项目,所以我认为一般的例子会很好,因为那不是作弊。我想诚实地做我的工作,但当我寻找例子时,这些例子是很有帮助的。这是一个公平的观点,但你至少应该把你的问题表达得更清楚、更准确。一般的和模糊的、不清楚的是有区别的。假设我是一名教授,这就是我,你可能会有不同的看法,我让四名学生写一个大型程序来。。。模拟学生上课的时间安排。如果他们要求某人给我一个调度算法,我会倾向于认为这是边缘欺骗,虽然,说这是我的算法,你认为可能不是什么,这是逐案的。如果他们问我应该如何比较这两个价值观,这是一个非常非常小的系统组成部分,我会说他们是足智多谋的。YMMV和做学生,YGMV!为什么树映射会涉及到这一点?我以为OP是想弄清楚如何在数据结构中存储双基元数据类型。为此指示的错误是double不包含compareTo方法。我在帖子中指出,在结构中存储原始数据类型是不可能的。我用TreeMap作为一个简单的例子来说明TreeMap数据结构需要compareTo方法来展示如何使用自动装箱的概念向数据结构添加基本类型。不要将double转换为int,它可以也将随着精度的降低而崩溃,而且double可以保存比int大或小的值。或者以其他方式解释:一个double不能放入一个int。在一个示例输出之后:d:1.337E42,intd:2147483647,d==intd:FalseInterest-我希望int1e40抛出一个异常,而不是以最大值为上限。然而,这很容易被双精度值的检查所捕获。无论如何,这充其量只是一个猜测,因为要求非常模糊。我不确定会发生什么,所以我尝试了它。这就是结果;至于你的检查:是的,可以这样做,但我发现更好的理解是,如果不需要检查,那是可以避免的。但是,即使对于int太大或太小的值会引发异常:将double d=10.3转换为int将返回10,brea
因为另一个原因,双d=10.3似乎等于int i=10。后一个将无法正常工作。插入d=10.3和i=10。发生的情况是,d.intValue将返回10。所以你现在有效地比较了10和10,而不是10.3。@TheMorph是真的,但也有一些情况下你可能会做后者,通过阅读张贴的问题,我无法判断OP的意图与此语句相比,是一个双精度,我想把它变成一个整数