Подтвердить что ты не робот

Показывать десятичную двойную только при необходимости.

Возможный дубликат:
Радиус удвоения до 2 значащих цифр после десятичной точки

У меня возникла проблема с двойным (десятичным).
Когда double = 1.234567 Затем я использую String.format("%.3f", myString);
Таким образом, результат равен 1.234

Но когда мой двойной 10 Результат будет 10 000
Я хочу, чтобы это было 10

Можно ли сказать, что ему нужно показывать десятичные знаки, когда они "полезны"?

Я видел несколько сообщений об этом, но это был php или С#, не мог найти что-то для android/java об этом (может быть, я не очень хорошо смотрю).

Надеюсь, вы, ребята, можете мне помочь в этом.

Изменить, теперь я использую что-то вроде этого: myString.replace(",000", "");
Но я думаю, что для них это более "дружественный" код.

4b9b3361

Ответ 1

DecimalFormat с параметром # это путь:

public static void main(String[] args) {

        double d1 = 1.234567;
        double d2 = 2;
        NumberFormat nf = new DecimalFormat("##.###");
        System.out.println(nf.format(d1));
        System.out.println(nf.format(d2));
    }

приведет к

1.235
2

Ответ 2

Не используйте удвоения. Вы можете потерять определенную точность. Здесь используется функция общего назначения.

public static double round(double unrounded, int precision, int roundingMode)
{
    BigDecimal bd = new BigDecimal(unrounded);
    BigDecimal rounded = bd.setScale(precision, roundingMode);
    return rounded.doubleValue();
}

Вы можете вызвать его с помощью

round(yourNumber, 3, BigDecimal.ROUND_HALF_UP);

"точность" - это количество желаемых десятичных точек.

Копировать отсюда.

Ответ 3

Попробуйте

double amount = 1.234567 ;
  NumberFormat formatter = new DecimalFormat("##.###");
  System.out.println("The Decimal Value is:"+formatter.format(amount));