Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中从分数格式的字符串转换为十进制或浮点?_Java_Android_Math - Fatal编程技术网

如何在Java中从分数格式的字符串转换为十进制或浮点?

如何在Java中从分数格式的字符串转换为十进制或浮点?,java,android,math,Java,Android,Math,我从数据库中提取的字符串值很少,例如 "1/4","2/3" 但是,当显示为Android ListView内容时,我需要将其显示为0.25,0.66 现在我不想拆分字符串,然后将单个字符串转换为数字和 然后将它们分开得到结果 有人知道吗,有没有像Double.valueOf或parseDoublekind这样的直接函数?尝试使用 SpannableStringBuilder test = new SpannableStringBuilder(); test.append("\n"); tes

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

"1/4","2/3"
但是,当显示为Android ListView内容时,我需要将其显示为
0.25
0.66

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

有人知道吗,有没有像
Double.valueOf
parseDouble
kind这样的直接函数?

尝试使用

SpannableStringBuilder test = new SpannableStringBuilder();
test.append("\n");
test.append(Html.fromHtml("<sup>5</sup>/<sub>9</sub>"));
test.append("\n");
SpannableStringBuilder测试=新的SpannableStringBuilder();
test.append(“\n”);
test.append(Html.fromHtml(“5/9”));
test.append(“\n”);

您可以使用
拆分(“/”)
拆分分数。然后,您可以将值转换为双精度,并执行除法。我不知道Android,我在Java中就是这样做的。

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

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

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

在java中,我们没有类似于JavaScript中的eval的东西,因此您可以使用。

我认为没有类似的东西。但我不明白你为什么不创建这样的函数:

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

我想你在过去两年里解决了这个问题;但是,您可以使用

它有一个内置的解析器,因此如果要调用:

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

然后d应该包含.5.

引用OP:“现在我不想拆分字符串,然后将单个字符串转换为数字,然后将它们拆分为结果。”你要求找到解决方案似乎不合理,但这似乎是最好的方法。是的,gabriel,甚至我也在想,为什么有人会将值保存为数据库中的1/4和2/3,但就客户而言,是的,他们确实有这样的值,因此需要解决。我的评论不是关于数据是如何保存的(我自己看到了一些奇怪的事情),而是关于您使用拆分(“/”)来解决问题的限制。好的,但是,我将如何实现“1/4”字符串到0.25作为浮点或双值的结果,使用除拆分以外的其他方法?正如人们在回答中所说,没有方法,所以你应该使用拆分,这就是为什么我不理解你不想使用它的原因。嘿,gabga,我已经写过,我知道通过拆分,我可以实现结果,但他不想做这样的工作。无论如何,谢谢。