public static void main(String[] args) {
double i=1.0;
double sum=0.0;
for(;;)
{
sum = sum+(double)(1/i);
i++;
if((double)(1/i)<0.000001)
break;
}
System.out.print(sum);


}
这个输出的值是14.392726722864989
可是我想限定他的小数位数  
怎么办

解决方案 »

  1.   

    2个办法,一个用BigDecimal的setScale方法,另一个是用DecimalFormat类的format方法。
      

  2.   

    你是要sum只保留指令的小数为数呢,还是要输出保留小数位数?
    输出的话用printf吧
      

  3.   

    import java.text.*;
    import java.math.*;public class SetScale {
    public static void main(String args[]){
    double d = 14.392726722864989;

    BigDecimal bd = new BigDecimal(String.valueOf(d));
    System.out.println(bd.setScale(2, RoundingMode.HALF_DOWN).toPlainString());//保留2位小数

    DecimalFormat df = new DecimalFormat("##.##");
    System.out.println(df.format(d));
    }
    }
    推荐第一个,因为不用管整数部分的长度。
      

  4.   

    double sum = 14.392726722864989
    NumberFormat num = NumberFormat.getInstance();
    num.setMinimumFractionDigits(6);//设置数的小数部分所允许的最小位数为6位
    System.out.print(num.format(sum));
      

  5.   


    import java.text.DecimalFormat;public class Main { public static void main(String[] args) {
    double i = 1.0;
    double sum = 0.0;
    for (;;) {
    sum = sum + (double) (1 / i);
    i++;
    if ((double) (1 / i) < 0.000001)
    break;
    }

    DecimalFormat df = new DecimalFormat();
    df.setMaximumFractionDigits(4);
    System.out.print(df.format(sum));//输出:14.3927

    }}
      

  6.   

    使用进行格式化 java.text.NumberFormat
      

  7.   

    public static void main(String[] args) {
    double i = 1.0;
    double sum = 0.0;
    for (;;) {
    sum = sum + (double) (1 / i);
    i++;
    if ((double) (1 / i) < 0.000001)
    break;
    }
    System.out.printf("%.2f", sum);
    }