作者dirx (??????)
看板java
标题Re: [问题] parse 浮点数
时间Mon Dec 17 17:32:45 2007
※ 引述《ling07 (神风特攻队)》之铭言:
: String s="1.56789";
: float num=0;
: num=Float.parseFloat(s);
: 我知道可以用上面的方法把字串s转成小数
: 但有没有方法可以控制小数点的位数
: 例如假设s为1.56789
: 如何控制在parse後,只要1.56
: 先感谢了 <(_ _)>
另一种方法:
使用 Regular Expression
/*
s - 浮点数字串
n - 小数位数
*/
String truncate(String s, Integer n){
Pattern p = Pattern.compile("([+-]?\\d+)(.(\\d+))?");
Matcher m = p.matcher(s);
if(m.find()){
String newStr = m.group(1);
String fraction = m.group(3);
if(fraction != null){
if(fraction.length() > n){
return newStr + "." + fraction.substring(0, n);
}else{
return newStr + "." + fraction;
}
}else{
return newStr;
}
}else{
return s;
}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.75.28.114
1F:推 superlubu:其实你的 pattern string 有 bug XD 12/17 19:21
2F:→ dirx:不好意思,请问我的BUG发生在哪? 真的十分感谢指教。 12/18 08:20
3F:推 superlubu:後面 (.(\\d+)) 那边,因为 "." 本身是 wild pattern 12/18 11:40
4F:→ superlubu:所以应该是 (\\.(\\d+)) 这样 12/18 11:42