java 保留小数点几位的问题!!!!

double Vp[][] = new double [10][10];
定义一个double类型的数组!
经过一些计算,得出的每个结果小数点后都有10多位,我只想保留2或3位,其他的4设5入,怎么写?
别人教我两种方法,可是都有问题!:
第一种:
import java.text.DecimalFormat;
DecimalFormat df = new DecimalFormat("0.000");
String num = "";
for(int x=0;i<9;i++) {
for(int y=0;j<9;j++) {
num+=df.format(Vp[x][y]);
}
System.out.print(Vp[x][y]);
}
可是这样输出的数据每个数字和每个数字是连在一起的(3.2555.335-10.555....都连一起)!我不想让他回车换行,只想让他用符号隔开,这成num+=df.format(Vp[x][y]+" ,");就有异常!
第二种方法:
int i=(int)(Vp[x][y]*100);
说这样可可以..可是我运行之后就是把数据乘了100...比如Vp[0][0]=3.53435561354;结果就得353.435561354了...
有没有方法解决这个问题?
帮忙解决给追分!

2个方法都没错,是你取了一半 = =|

第一个:
写成num+=df.format(Vp[x][y])+",";
就可以了.

第二个:
float i=((int)(Vp[x][y]*100))/100f;
意思是把这个double变量乘以100再取整,然后除以100得到的就是小数点后有两位的实数,要用字符串形式请自行转换.如果要保留3位就用1000.

PS:
1. 第一个方法是比较标准的写法.不推荐第二种写法.
2. DecimalFormat是否进行了四舍五入我不知道,但是(int)可是没有的,它是直接把后面的数字截掉了.
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-06-01
瞧你说的,“给追加分”,你觉得大家真的在乎那点分吗?而且你前一个问题等于让别人白回答了,直接在那个问题上补充不好吗?为什么要制造问题垃圾?

double r = (int)(100.129876 * 100) + (100.129876 * 1000 % 10 < 5 ? 0 : 1);
System.out.println(r/100);

补充:别听楼上的,第一个占用资源很多,代码臃肿,而且一点技术含量都没有。我这个代码100%可以信赖!
相似回答