我从数据库中获取的字符串值很少,例如
"1/4","2/3"
但是在显示为 Android ListView 内容时,我需要将其显示为0.25
, 0.66
。
现在我不想拆分字符串,然后将单个字符串转换为数字,然后将它们分开以获得结果。
有谁知道,任何直接功能喜欢Double.valueOf
或parseDouble
种类?
为什么您“不想拆分字符串,然后将单个字符串转换为数字,然后将它们分开以获得结果”?
我不知道有任何内置函数可以做到这一点,所以最简单的解决方案是:
double parse(String ratio) {
if (ratio.contains("/")) {
String[] rat = ratio.split("/");
return Double.parseDouble(rat[0]) / Double.parseDouble(rat[1]);
} else {
return Double.parseDouble(ratio);
}
}
它还涵盖了比率的整数表示的情况
parse("1/2") => 0.5
parse("3/7") => 0.42857142857142855
parse("1") => 1.0
我想你在过去 2 年里已经解决了这个问题;但是,您可以使用Apache commons fraction class。
它有一个内置的解析器,所以如果你要调用:
Fraction fraction = Fraction.getFraction("1/2");
double d = fraction.doubleValue();
那么 d 应该包含 0.5。
您可以使用 拆分分数split("/")
。然后您可以将值转换为Double
并执行除法。我对Android一无所知,这就是我在Java中的做法。
在 java 中,我们没有像 JavaScript 中的 eval 这样的东西,所以你可以使用this。
我不认为有这样的事情。但我不明白为什么你不会像这样创建自己的函数:
public static double fromStringFraction(String fraction){
String[] fractionArray = fraction.split("/");
try {
if (fractionArray.length != 2){
if (fractionArray.length == 1){
return Double.parseDouble(fractionArray[0]);
}
else {
return 0d;
}
}
double b = Double.parseDouble(fractionArray[1]);
if (b==0d){
return 0d;
}
Double a = Double.parseDouble(fractionArray[0]);
return a/b;
}
catch (NumberFormatException e){
return 0d;
}
}
尝试使用
SpannableStringBuilder test = new SpannableStringBuilder();
test.append("\n");
test.append(Html.fromHtml("<sup>5</sup>/<sub>9</sub>"));
test.append("\n");