8

我从数据库中获取的字符串值很少,例如

"1/4","2/3"

但是在显示为 Android ListView 内容时,我需要将其显示为0.25, 0.66

现在我不想拆分字符串,然后将单个字符串转换为数字,然后将它们分开以获得结果。

有谁知道,任何直接功能喜欢Double.valueOfparseDouble种类?

4

6 回答 6

10

为什么您“不想拆分字符串,然后将单个字符串转换为数字,然后将它们分开以获得结果”

我不知道有任何内置函数可以做到这一点,所以最简单的解决方案是:

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
于 2012-11-06T11:28:30.843 回答
7

我想你在过去 2 年里已经解决了这个问题;但是,您可以使用Apache commons fraction class

它有一个内置的解析器,所以如果你要调用:

Fraction fraction = Fraction.getFraction("1/2");
double d = fraction.doubleValue();

那么 d 应该包含 0.5。

于 2015-02-07T01:26:03.597 回答
1

您可以使用 拆分分数split("/")。然后您可以将值转换为Double并执行除法。我对Android一无所知,这就是我在Java中的做法。

于 2012-11-06T11:20:18.273 回答
1

在 java 中,我们没有像 JavaScript 中的 eval 这样的东西,所以你可以使用this

于 2012-11-06T11:30:13.420 回答
0

我不认为有这样的事情。但我不明白为什么你不会像这样创建自己的函数:

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;
    }
}
于 2012-11-06T11:46:25.123 回答
-1

尝试使用

SpannableStringBuilder test = new SpannableStringBuilder();
test.append("\n");
test.append(Html.fromHtml("<sup>5</sup>/<sub>9</sub>"));
test.append("\n");
于 2012-11-06T11:19:09.913 回答