Pertanyaan Bagaimana cara mengubah dari string yang diformat menjadi Decimal atau Float di Java?


Saya memiliki beberapa nilai string yang saya ambil dari database saya misalnya

"1/4","2/3"

Tetapi ketika menampilkan konten Android ListView saya harus menampilkannya sebagai 0.25,0.66.

Sekarang saya tidak ingin membagi string dan kemudian menyembunyikan string individu ke angka dan kemudian bagi mereka untuk mendapatkan hasil.

Apakah ada yang tahu, fungsi langsung apa pun seperti Double.valueOf atau parseDouble jenis?


7
2017-11-06 11:17


asal


Jawaban:


Kenapa kamu "Jangan ingin membagi string dan kemudian diamkan ke string individu ke angka dan kemudian bagi mereka untuk mendapatkan hasil"?

Saya tidak mengetahui fungsi bawaan apa pun untuk melakukan itu jadi solusi paling sederhana:

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);
    }
}

Ini juga mencakup kasus di mana Anda memiliki representasi rasio integer

parse("1/2") => 0.5
parse("3/7") => 0.42857142857142855
parse("1") => 1.0

8
2017-11-06 11:28



Saya membayangkan Anda telah memecahkan masalah ini dalam 2 tahun terakhir; namun, Anda dapat menggunakan Kelas fraksi Apache commons.

Ini memiliki parser dibangun, jadi jika Anda menelepon:

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

Maka d harus berisi .5.


3
2018-02-07 01:26



Anda dapat membagi pecahan menggunakan split("/"). Kemudian Anda dapat mengonversi nilai menjadi Double dan melakukan pembagian. Saya tidak tahu Android, begitulah saya melakukannya di Jawa.


1
2017-11-06 11:20



Di java, kami tidak memiliki sesuatu seperti eval dari JavaScript sehingga Anda mungkin bisa menggunakannya ini.


1
2017-11-06 11:30



Saya tidak berpikir ada yang seperti itu. Tapi saya tidak mengerti mengapa Anda tidak membuat fungsi Anda sendiri seperti ini:

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;
    }
}

0
2017-11-06 11:46



coba gunakan

SpannableStringBuilder test = new SpannableStringBuilder();
test.append("\n");
test.append(Html.fromHtml("<sup>5</sup>/<sub>9</sub>"));
test.append("\n");

-1
2017-11-06 11:19