Вопрос по java, android, number-formatting – Показать только две цифры после десятичной [дубликата]

77

This question already has an answer here:

how to convert double to 2 number after the dot? [duplicate] 6 answers

Как получить двойное значение, состоящее только из двух цифр после десятичной точки.

например

если

i=348842.
double i2=i/60000;
tv.setText(String.valueOf(i2));

этот код генерации5.81403333.

Но я хочу только5.81.

Так что мне делать?

Этот вопрос не является дубликатомstackoverflow.com/questions/7415733/… Этот вопрос задает о форматировании; этот вопрос задает вопрос об изменении значения вdouble. Raedwald

Ваш Ответ

7   ответов
5
i=348842.
double i2=i/60000;
DecimalFormat dtime = new DecimalFormat("#.##"); 
i2= Double.valueOf(dtime.format(time));
v.setText(String.valueOf(i2));
9
public class MathRound {
    public static void main(String[] args) {

        double number1 = 10.123456;
        double number2 = (int)Math.round(number1 * 100)/(double)100;
        System.out.println(number2);
    }
}
157

DecimalFormat.

DecimalFormat is a concrete subclass of NumberFormat that formats decimal numbers. It has a variety of features designed to make it possible to parse and format numbers in any locale, including support for Western, Arabic, and Indic digits. It also supports different kinds of numbers, including integers (123), fixed-point numbers (123.4), scientific notation (1.23E4), percentages (12%), and currency amounts ($123). All of these can be localized.

Code snippet -

double i2=i/60000;
tv.setText(new DecimalFormat("##.##").format(i2));

Output -

5.81

Его двойное значение, которое может быть сформировано желаемым строковым представлением с помощьюDecimalFormat, Я ж не поняла ваш вопрос на 100%.
Это сработало почти так, как я хотел. но в моем случае мне понадобилась одна цифра после запятой. Таким образом, используется как - new DecimalFormat (& quot; ##. # & Quot;), но оно не работает для случаев с 0 после десятичного, например 35.0, так как оно показывает его35, Но мне нужно что-то вроде35.0
Вам не нужно toString (), форматирование уже возвращает String. Пожалуйста, также посетитеdeveloper.android.com/reference/java/text/DecimalFormat.html
String amt = new DecimalFormat (& quot; ##. ## & quot;). Format (448.4); - & GT; он дает только 448.4 String amt = new DecimalFormat ("##. 00"). format (448.4); - & GT; Его т 448.40
что если я хочу в двойном формате?
25

как сделать десятичное число не короче, здесь я сократило его до 4 после десятичного значения.

   double value = 12.3457652133
  value =Double.parseDouble(new DecimalFormat("##.####").format(value));
Это имеет ограничение, вы должны быть уверены, что местныйDecimalFormat возвращает десятичное значение с точкой, а не запятой, в противном случаеparseDouble будет бросатьNumberFormatException
для установки текста в Textview Например: double value = 12.3457652133 textview.setText (new DecimalFormat (& quot; ##. ## & quot;). format (Double.parseDouble (value)));
3

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

И другой аспект - обеспечение правильного результата. Итак, вы хотите обрезать число или округлить его.

Поэтому, прежде чем начать, вы должны спросить себя, интересуюсь ли я ценностью или нет.

Для достижения вашей цели у вас есть несколько вариантов, но большинство из них относятся кФормат а такжеFormatter, но я просто предлагаю заглянуть вэтот ответ.

Отменить операцию? Спокойствие наоборот: форматирование числа в виде строки должно выполняться только для системного вывода, а в хорошо спроектированной системе его изменение не требуется.
10

double i = 348842;
double i2 = i/60000;
float k = (float) Math.round(i2 * 100) / 100;
Может быть, это простой код для программиста, он помог мне в критической ситуации. Спасибо, приятель ... 1 голос за тебя
Я думаю, что это невозможно! Потому что Math.round - возвращает целое число, и мы приводим его к значению с плавающей запятой. Как значение с плавающей запятой (581.0) после деления на 100 может быть примерно таким: 5.81000000001? У вас есть тестовый пример, который описывает ваше мнение?
Этот метод будет очень подвержен математическим ошибкам с плавающей запятой, как указал @Petriborg
Я полагаю, что ему интересно, какdisplay только 2 значащие цифры. Кроме того, из-за того, как работает плавающая точка, ваше решение не приведет точно5.81, но что-то вроде5.81000000001 или т.п.
110

String.format("%.2f", i2)?

Работал на меня. Спасибо.
Это может отформатировать строку с запятой в зависимости от локали, например, результат = 5,32 вместо 5,32.
Гораздо меньше печатать, чем десятичный формат, lmao. Благодарю.
я использовалString.format(Locale.US, "%.2f", i2)

Похожие вопросы