首页 / 操作系统 / Linux / Java Double的精度问题
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:javalilongfeijava精度问题>java Main 45.2222 45.222 2。E:javalilongfeijava精度问题>java Main 45.000000000000 45.000 3。E:javalilongfeijava精度问题>java Main 45.33366666 45.334 4。E:javalilongfeijava精度问题>java Main 45555555555555 45555555555555.000 5。E:javalilongfeijava精度问题>java Main 0.0000006 0.000