如何将分数格式化的string转换为Java中的Decimal或Float?

我有几个string值,我从我的数据库中提取例如

"1/4","2/3" 

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

现在我不想分割string,然后将单个string转换为数字,然后将它们分开以得到结果。

有谁知道,像Double.valueOfparseDouble类的任何直接function?

Solutions Collecting From Web of "如何将分数格式化的string转换为Java中的Decimal或Float?"

为什么你“不想分割string,然后转换为单个string的数字,然后将它们分为有结果”

我不知道有任何内置的function,所以最简单的解决scheme:

 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 

我想你在过去的两年里已经解决了这个问题。 但是,您可以使用Apache commons分数类 。

它有一个内置的parsing器,所以如果你打电话给:

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

那么d应该包含.5。

您可以使用split("/")分割分数。 然后,您可以将值转换为Double并执行除法。 我不知道的Android,这就是我怎么做的Java。

在java中,我们没有任何东西像JavaScript的eval,所以你可以使用这个 。

我不认为有这样的事情。 但我不明白为什么你不会创build你自己的这样的function:

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