如何在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,我已经写过,我知道通过拆分,我可以实现结果,但他不想做这样的工作。无论如何,谢谢。