2016-07-14 2 views
0

Я попытался найти решение этой проблемы, но я не уверен, как задать вопрос.

Я должен заполнить TextView словами и цифрами, и я настроил его в Activity.

 float leftTimeSecs = leftTime/1000; 
     float roundedLeftSecs = round(leftTimeSecs, 3); 
     //How to access this directly from "strings" or .xml files 
     duration.setText(getString(R.string.time_data_sec, roundedLeftSecs, 
       getString(R.string.seconds))); 

Моя строка, я устанавливаю текст является:

<string name="time_data_sec">Duration: %1$f %2$s</string> 

и круглая вызванная функция

public static float round(float value, int places) { 
     if (places < 0) throw new IllegalArgumentException(); 
     BigDecimal bigDecimal = new BigDecimal(value); 
     bigDecimal = bigDecimal.setScale(places, RoundingMode.HALF_UP); 
     return bigDecimal.floatValue(); 
    } 

Я хочу вывод на печать значение из roundedLeftSecs (который leftTime округляется до трех мест), но когда я не жестко скопировал roundedLeftSecs, в нем будет создано множество конечных нулей после округленного числа.

Я обнаружил, что% 1 $ d является десятичным заполнителем, но это не позволит мне использовать его с поплавком или двойным выражением, поэтому я не уверен, как избавиться от этих нулей или если это возможно.

ответ

0

Для тех, у кого такая же проблема, я решил ее использовать% 1 $ s и преобразовать округленное число в строку, и он отлично работает!

Вот где я хотел бы округлить:

float leftTimeSecs = leftTime/1000; 
       float roundedLeftSecs = round(leftTimeSecs, 3); 
       String roundedLeftSecString = Float.toString(roundedLeftSecs); 
       duration.setText(getString(R.string.time_data_sec, roundedLeftSecString, 
         getString(R.string.seconds))); 

Вот строка:

<string name="time_data_sec">Duration: %1$s %2$s</string> 
Смежные вопросы