我一直在努力解决这个问题。我有一些显示在TextView中的数字。在这个textview中,我只希望浮点数以3的精度显示,因为只有3个数字的空间。以下是我想要实现的一些输入输出示例:
1 -> 1.00
0.34 -> 0.34
-12.34 -> -12.3
123.45 -> 123
输入将始终四舍五入到最接近的百分位。 我尝试过使用String.format甚至制作自定义格式。 目前我有逻辑来弄清楚格式,但必须有一个班轮:
float abs_d = Math.abs(my_float);
String dist = "";
if (abs_d < 10) {
dist = String.format("%1.2f", d);
}
else if (abs_d < 100) {
dist = String.format("%2.1f", d);
}
else {
dist = String.format("%3.f",d);
}
my_text_view.setText(dist);
也许有一种偷偷摸摸的方式使用TextView来做到这一点?你可以指定像素宽度,但字符宽度怎么样(但即使这样,我会接受一个负号)?我想应该有一些Java库来做这件事。
答案 0 :(得分:2)
我认为你尝试过使用DecimalFormat?
答案 1 :(得分:0)
当然有一个班轮。将逻辑放在名为format_float
的函数中并使用
my_text_view.setText(format_float(my_float));
答案 2 :(得分:0)
@ikegami @Jack感谢您的对话和建议。 这似乎得到了我正在搜索的功能:
String str = "999";
DecimalFormat f = null;
if (abs_d < 1000) {
if (abs_d < 1) {
f = new DecimalFormat("@@");
str = f.format(d);
}
else {
f = new DecimalFormat("@@@");
str = f.format(d);
}
}
my_text_view.setText(str);