我正在编写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);
我将如何做到这一点
答案 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中链接,以包含一些截断代码。