Java Double的精度问题

本网站用的阿里云ECS,推荐大家用。自己搞个学习研究也不错

<

div id=”content”> java.text

  类 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

㼯div>

未经允许不得转载:演道网 » Java Double的精度问题

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册