我试图寻找这个问题的解决方案,但我不确定如何提出这个问题。
我将使用单词和数字填充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>
并且调用的round函数是
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舍入到三个位置),但是当我不对其中的roundLeftSecs进行硬编码时,将在舍入后的数字后产生许多尾随零。
我发现%1 $ d是一个小数占位符,但它不允许我使用浮点数或双精度表达式,所以我不确定如何摆脱这个零或甚至可能。
答案 0 :(得分: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>