Удаление .0 из двойного - PullRequest
       7

Удаление .0 из двойного

5 голосов
/ 18 августа 2011

Я пытаюсь отображать числа в строке динамически, поэтому, если число имеет десятичное число, отображать их, но если нет, не показывать пример .0

: отображать 5.5 как 5.5 и 5.0 как 5

Это то, что у меня есть до сих пор: (ответ двойной)

double temp = answer;
long temp2 = (long) temp;
if (temp == temp2) {
output = String.valueOf(temp2);
System.out.println(output);

эта работа будет работать примерно до 1e18, после чего произойдет ошибка из-за максимального размера Long. Так как быЯ достигаю этого на больших числах, таких как 5.43e86

Ответы [ 4 ]

23 голосов
/ 18 августа 2011

Использование Десятичный формат

double answer = 5.0;
DecimalFormat df = new DecimalFormat("###.#");
System.out.println(df.format(answer));
2 голосов
/ 18 августа 2011

Предложения DecimalFormat - самый простой способ справиться с этим. Если их недостаточно, вот еще одна идея.

Если вы начинаете задавать максимальные значения, которые могут быть представлены примитивами в Java, вам может потребоваться перейти к BigInteger и BigDecimal .

Попробуйте поиграть с методом BigDecimal.toBigInteger() в сочетании с методами toString() в BigDecimal и BigInteger.

1 голос
/ 28 августа 2016

Это не хорошее решение если вы используете новый DecimalFormat ("0. #"), вам не хватает данных, например PI = 3.14, но после разбора вы получаете 3.1

Другое решение использовать eval% 1? (int) d: d на этот раз предел максимального целого числа, опять пропущенные данные

мое решение работает, но это не очень хорошая идея

res = removeLastChars(eval,".0");

private String removeLastChars(double eval, String text){

    String res = String.valueOf(eval);
    int length = text.length();

    if (res.length() > length){
        res = res.substring((res.length() - length), res.length()).equals(text)
                ? res.substring(0, (res.length() - length)) : res;
    }

    return res;
}
0 голосов
/ 18 августа 2011

Посмотрите на http://download.oracle.com/javase/6/docs/api/java/text/DecimalFormat.html

, вам нужно просто DecimalFormat ("0.0")

...