сравнение Java с методом tostring от двойного до целого - PullRequest
2 голосов
/ 06 апреля 2011

Как мне использовать сравнить для двойного, и я хочу превратить его в целое число?

Пример был бы хорош.Я искал Java API.

также можно ли использовать операторы if и else с методом String toString?Шахта продолжала падать для особых случаев.

Я полный нуб к Java, я думаю, что я постоянно читал, чтобы учиться

Ответы [ 4 ]

3 голосов
/ 07 апреля 2011

Если вы хотите сравнить целое число с двойным, вам нужно преобразовать целое число в двойное. Обратите внимание, что это не будет работать наоборот, так как int не может содержать все значения, которые могут содержать двойную банку: значения будут округлены вниз

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 будет больше накладных расходов по сравнению с использованием double или int.

Что касается второй части вашего вопроса, я не очень понимаю, в чем ваш вопрос / намерение. Пожалуйста, попробуйте уточнить это.

1 голос
/ 06 апреля 2011

Вы не хотите преобразовывать в 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, если хотите запустить этот пример)

1 голос
/ 06 апреля 2011

вы можете попробовать что-то вроде этого

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

или

    i.compareTo(d.intValue());

Я не уверен, какой вам нужен.

0 голосов
/ 06 апреля 2011

Я могу только догадываться о ваших точных требованиях.Вы должны попытаться уточнить их немного более четко.

Если вы хотите сравнить двойные и целые, это может быть сложно.У вас есть два варианта.

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

two: приведите 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...