我有我从我的数据库e.g如何将分数格式化字符串转换为Java中的Decimal或Float?
"1/4","2/3"
获取一些字符串值,但是在显示由于Android的ListView内容我需要显示为0.25
,0.66
。
现在我不想分割字符串,然后转换为单个字符串到数字,然后将它们分割为有结果。
有谁知道,像Double.valueOf
或parseDouble
类似的任何直接函数?
我有我从我的数据库e.g如何将分数格式化字符串转换为Java中的Decimal或Float?
"1/4","2/3"
获取一些字符串值,但是在显示由于Android的ListView内容我需要显示为0.25
,0.66
。
现在我不想分割字符串,然后转换为单个字符串到数字,然后将它们分割为有结果。
有谁知道,像Double.valueOf
或parseDouble
类似的任何直接函数?
尝试使用
SpannableStringBuilder test = new SpannableStringBuilder();
test.append("\n");
test.append(Html.fromHtml("<sup>5</sup>/<sub>9</sub>"));
test.append("\n");
你得到了OP错误我很害怕 –
为什么你“不想分割字符串,然后转换为单个字符串的数字,然后将它们分为有结果”?
我不知道任何内置的功能来做到这一点,因此最简单的解决方案:
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,所以你可以使用this。
我不认为有这样的事情。但我不明白你为什么不创建自己的功能是这样的:
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;
}
}
嘿gabga,我有艾雷迪写道,我知道通过分裂我可以达到结果,但不想做这样的工作。反正谢谢。 –
我想你已经在过去的2年解决了这个问题;但是,您可以使用Apache commons fraction class。
它有一个内置的解析器,所以如果你要拨打:
Fraction fraction = Fraction.getFraction("1/2");
double d = fraction.doubleValue();
然后d应该包含0.5。
您的需求找到解决方案似乎不合理,它似乎是像这样做的最佳方法。 –
是的gabriel,即使我在想为什么有人会将数值保存为数据库中的1/4和2/3,但就客户的关注而言,是的,他们确实有这样的价值,所以需要解决方法。 –
我的评论不是关于如何保存数据(自己看到一些奇怪的东西),而是限制使用split(“/”)来解决问题。 –