Java Double的精度问题

  类 DecimalFormat

  java.lang.Object

    java.text.Format

      java.text.NumberFormat

        java.text.DecimalFormat

  void setMaximumFractionDigits(int newValue)            设置某个数的小数部分中所允许的最大数字位数。

  void setMinimumFractionDigits(int newValue)            设置某个数的小数部分中所允许的最小数字位数。

  //Main.java

  import java.util.*;

  import java.text.*;

  public class Main{

  public static void main(String [] args){

  try{

  Scanner input=new Scanner(System.in);

  double n=input.nextDouble();

  System.out.println(SicenToComm(n));

  }catch(Exception e){

  }

  }

  public static String SicenToComm(double value) {   //保留小数点后3位(四舍五入),且不按科学计数法输出

  String retValue = null;

  DecimalFormat df = new DecimalFormat();

  df.setMinimumFractionDigits(3);

  df.setMaximumFractionDigits(3);

  retValue = df.format(value);

  retValue = retValue.replaceAll(",", "");

  return retValue;

  }

  }

  //测试用例:

  1。E:\java\lilongfei\java精度问题>java Main

  45.2222

  45.222

  2。E:\java\lilongfei\java精度问题>java Main

  45.000000000000

  45.000

  3。E:\java\lilongfei\java精度问题>java Main

  45.33366666

  45.334

  4。E:\java\lilongfei\java精度问题>java Main

  45555555555555

  45555555555555.000

  5。E:\java\lilongfei\java精度问题>java Main

  0.0000006

  0.000

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwpjdz.html