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

MapleColour 2012-03-30 01:45:28

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,怎样解决此问题?

...全文
855 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cary_Liu 2012-03-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
是想在取小数位数时就能控制其显示格式,看了你的回复想起另写个类用于输出就行了,只是不知道有没有更好的办法?
[/Quote]
呵呵,我刚入门。确实觉得应该有更好的办法
MapleColour 2012-03-31
  • 打赏
  • 举报
回复
是想在取小数位数时就能控制其显示格式,看了你的回复想起另写个类用于输出就行了,只是不知道有没有更好的办法?
MapleColour 2012-03-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
String s = f.format(x);
System.out.println(s);
return Double.parseDouble(s);

打印出来的s就是想到的数据,可是你又把它转换成double型就不可以了。
double是不能存10或者10.10这样的浮点数的。
[/Quote]

用这方法分写一个用于控制输出的类可行。
MapleColour 2012-03-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
当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 result = df.format(x);
return result;……
[/Quote]
这应该是个不错的办法,不过还要试验过才知道。
其实计算时只要保留值正确就行了,格式不重要,所以分成两个类写还是不错的。
神经斌 2012-03-31
  • 打赏
  • 举报
回复
上面有个地方多敲了一个2
神经斌 2012-03-31
  • 打赏
  • 举报
回复
当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);转回来。
sdojqy1122 2012-03-31
  • 打赏
  • 举报
回复
http://zhidao.baidu.com/question/22080787.html?fr=qrl&cid=870&index=2&fr2=query
Cary_Liu 2012-03-30
  • 打赏
  • 举报
回复
double number=3.1415926
不是格式化控制台System.out.printf("%.2f\n",number)也可以控制小数位的输出3.14吗
菖蒲老先生 2012-03-30
  • 打赏
  • 举报
回复
String s = f.format(x);
System.out.println(s);
return Double.parseDouble(s);

打印出来的s就是想到的数据,可是你又把它转换成double型就不可以了。
double是不能存10或者10.10这样的浮点数的。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧