显示精度为3的浮点数

时间:2011-04-26 21:39:25

标签: java android string-formatting

我一直在努力解决这个问题。我有一些显示在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库来做这件事。

3 个答案:

答案 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);