Показывать десятичную двойную только при необходимости.
Возможный дубликат:
Радиус удвоения до 2 значащих цифр после десятичной точки
У меня возникла проблема с двойным (десятичным).
Когда double = 1.234567 Затем я использую String.format("%.3f", myString);
Таким образом, результат равен 1.234
Но когда мой двойной 10
Результат будет 10 000
Я хочу, чтобы это было 10
Можно ли сказать, что ему нужно показывать десятичные знаки, когда они "полезны"?
Я видел несколько сообщений об этом, но это был php или С#, не мог найти что-то для android/java об этом (может быть, я не очень хорошо смотрю).
Надеюсь, вы, ребята, можете мне помочь в этом.
Изменить, теперь я использую что-то вроде этого: myString.replace(",000", "");
Но я думаю, что для них это более "дружественный" код.
Ответы
Ответ 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));