10位数的android

时间:2011-04-20 18:18:29

标签: java android string math double

我正在编写Android计算器,并希望将输出的字符数限制为10 例如:
1:ans = 1.23456789101
应显示1.23456789
2:ans = 1234.56789101
应显示1234.56789
3:ans = 123456789101
应显示1234567890
这是我到目前为止,但它只适用于“。”之前的1位数。

        ans = (double)Math.round(ans * 100000000) / 100000000;
        String output = String.valueOf(ans);
        if(output.endsWith(".0")){
            output=output.substring(0, output.length()-2);
        }
        textbox.setText(output);

我将如何做到这一点

2 个答案:

答案 0 :(得分:1)

我建议使用DecimalFormat类。它可以让您自定义值的显示。我的好先生,不要因为小数点的子串而伤害你。另外,请阅读舍入行为以确保它能够执行您想要的操作(您为DecimalFormat提供了一个未舍入的值)。

double d = 1234.543534535345345345;
DecimalFormat twoDForm = new DecimalFormat("#.##"); // round to 2 decimals
System.Out.Printline(Double.valueOf(twoDForm.format(d));

答案 1 :(得分:1)

您可以使用一系列关于该值的if语句与DecimalFormat

结合使用
if (value >= 10 && value < 100) DecimalFormat formatter = new DecimalFormat("#.#########");
else if (value >= 100 && value < 1000)) DecimalFormat formatter = new DecimalFormat("#.########");
else if (value >= 1000 && value < 10000)) DecimalFormat formatter = new DecimalFormat("#.#######");

etc etc

textBox.setText(String.valueOf(formatter.format(value));

我确信有一种更优雅的方式来处理这个,但这至少会奏效。对于超过10位数的值,您还可以在else中链接,以包含一些截断代码。