我的android应用程序中需要一个函数的帮助。该函数获得如下的双精度:0.1234567或123.1234567;我想将其转换为字符串,之后,如果double大于1,则必须返回123.1(如果double为123.123456),如果double小于0,则必须返回123(如果double为0.123456)。目前,我设法将双精度转换为字符串,但我不知道该怎么做。
这是我的方法:
public String getFormatDistance(double distance) {
String doubleAsText = String.valueOf(distance);
if (distance > 0.9) {
return doubleAsText;
} else {
String[] parts = doubleAsText.split(".");
String part1 = parts[0];
String part2 = parts[1];
//part2 = part2.split("");
return part2;
}
}
这一行显示字符串:
TextView fourText = (TextView) row.findViewById(R.id.distance);
fourText.setText(getFormatDistance(values.get(position).distance));
它返回下一个错误:
01-23 09:45:48.816: E/AndroidRuntime(8677): java.lang.ArrayIndexOutOfBoundsException: length=0; index=1
答案 0 :(得分:3)
使用Pattern.quote()
按字符符号分割字符串。
这样做
String[] parts = doubleAsText.split(Pattern.quote("."));
请参阅here如何将double值拆分为Integer part和Fractional part。
答案 1 :(得分:0)
if (CharMatcher.is('.').countIn("doubleAsText") > 1) {
return doubleAsText;
} else {
String[] parts = doubleAsText.split(".");
String part1 = parts[0];
String part2 = parts[1];
//part2 = part2.split("");
return part2;
}
答案 2 :(得分:0)
String.split()
使用正则表达式,其中点.
是特殊字符。因此,您需要转义Dot,因此您可以按字符点分割,不要将点用作正则表达式中的特殊(函数)字符。
String[] parts = s.split("\\.");
String part1 = parts[0];
String part2 = parts[1];