日期:2014-05-20  浏览次数:20858 次

java中怎样解决double型数据小数位数的控制

import java.text.DecimalFormat;

public class SetNumberPrecision {
  private String s=null;
  public double setNumberPrecision(double x,int Number){
String p;
if(Number==0){
p="#0";
}
else{
p = "#0.";  
for(int i=0;i<Number;i++){ // for的巧妙运用
p=p+"0";  
}
}
 
  DecimalFormat f = new DecimalFormat(p);  
  String s = f.format(x);  
  return Double.parseDouble(s);  
  }
   

}


问题:1.例如:当Number=0,x=10.0时,想要的结果是整数10,而返回的是10.0,怎样解决此问题?
  2.例如:当Number=2,x=10.10时,想要返回的结果是10.10,而返回的是10.1,怎样解决此问题?



------解决方案--------------------
String s = f.format(x);
System.out.println(s);
return Double.parseDouble(s);

打印出来的s就是想到的数据,可是你又把它转换成double型就不可以了。
double是不能存10或者10.10这样的浮点数的。
------解决方案--------------------
double number=3.1415926
不是格式化控制台System.out.printf("%.2f\n",number)也可以控制小数位的输出3.14吗
------解决方案--------------------
探讨
是想在取小数位数时就能控制其显示格式,看了你的回复想起另写个类用于输出就行了,只是不知道有没有更好的办法?

------解决方案--------------------
http://zhidao.baidu.com/question/22080787.html?fr=qrl&cid=870&index=2&fr2=query
------解决方案--------------------
当Number=0,x=10.0时
String result = Double.toString(x).split("\\.")[0];
return result;
当Number=2,x=10.10时
DecimalFormat df = new DecimalFormat(".00");
String result2 = df.format(x);
return result;
用String型保证你想要的格式,在需要用其计算的地方用Double.parseDouble(result);转回来。
------解决方案--------------------
上面有个地方多敲了一个2