8

データベースからフェッチしている文字列値がほとんどありません。

"1/4","2/3"

0.25ただし、Android ListViewコンテンツとして表示している間は、、として表示する必要があります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年間でこの問題を解決したと思います。ただし、Apachecommonsの分数クラスを使用できます。

パーサーが組み込まれているので、次のように呼び出します。

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

その場合、dには.5が含まれている必要があります。

于 2015-02-07T01:26:03.597 に答える
1

を使用して分数を分割できますsplit("/")。次に、値をに変換しDoubleて除算を実行できます。私はAndroidのことを知りません、それが私がJavaでそれをする方法です。

于 2012-11-06T11:20:18.273 に答える
1

Javaでは、JavaScriptのevalのようなものがないため、これを使用できる可能性があります

于 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 に答える