小数点后保留六位小数的几种方法
public static void main(String[] args) { java.text.DecimalFormat df = new DecimalFormat("#.000000"); java.text.NumberFormat nf = NumberFormat.getNumberInstance(); nf.setMaximumFractionDigits(6);//保留小数点后几位就传几 nf.setRoundingMode(RoundingMode.DOWN);//需要四舍五入就用 RoundingMode.UP double lat = 120.15784662032509; System.err.println(df.format(lat));//1 System.err.println(nf.format(lat));//2 System.err.println(String.format("%.6f",lat));//3 System.err.println(df.format((int) Math.ceil(lat)));//向上取整 /** * Math.round() “四舍五入”, 该函数返回的是一个四舍五入后的的整数 * Math.ceil() “向上取整”, 即小数部分直接舍去,并向正数部分进1 * Math.floor() “向下取整” ,即小数部分直接舍去 */ }
由于我处理的是经纬度需要保留小数点后六位数,有些就不适用了。
ps:今天再测试的时候发现 NumberFormat处理经度时总会出现取五位的情况,是因为如果截取的最后一位是0的话在格式化的时候会不显示出来。最后只能自己使用subString自己截取了。
public static void main(String[] args) { java.text.NumberFormat nf = NumberFormat.getNumberInstance(); //nf = (DecimalFormat)nf; ((DecimalFormat) nf).applyPattern("#.000000");//强制转换为DecimalFormat 添加格式 nf.setMaximumFractionDigits(6);//保留小数点后几位就传几 nf.setRoundingMode(RoundingMode.DOWN);//需要四舍五入就用 RoundingMode.UP System.err.println(nf.format(136.54222032402261));// System.err.println(nf.format(29.939281970523797));// System.err.println(SubStringLaLotude(136.54222032402261));// } public static String SubStringLaLotude(Double number) { String strLanlot="0.000000"; if(number>0){ strLanlot = String.valueOf(number); // 获得第一个点的位置 int index = strLanlot.indexOf("."); // 根据点的位置,截取 字符串。得到结果 result String result = strLanlot.substring(index); strLanlot = strLanlot.substring(0, index) + (result.length() < 7 ? result : result.substring(0, 7));// 取小数点后六位的经纬度 } return strLanlot; }
有关其他的数字处理可以参考下 :https://blog.csdn.net/a1064072510/article/details/89887633
public class DoubleFormat { double f = 11.4585; public void m1() { BigDecimal bg = new BigDecimal(f); double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); System.out.println(f1); } /** * DecimalFormat转换最简便 */ public void m2() { //#.00 表示两位小数 DecimalFormat df = new DecimalFormat("#0.00"); System.out.println(df.format(f)); } /** * String.format打印最简便 */ public void m3() { //%.2f %.表示 小数点前任意位数 2 表示两位小数 格式后的结果为f 表示浮点型 System.out.println(String.format("%.2f", f)); } public void m4() { NumberFormat nf = NumberFormat.getNumberInstance(); //digits 显示的数字位数 为格式化对象设定小数点后的显示的最多位,显示的最后位是舍入的 nf.setMaximumFractionDigits(2); System.out.println(nf.format(f)); } public static void main(String[] args) { DoubleFormat f = new DoubleFormat(); f.m1(); f.m2(); f.m3(); f.m4(); } /* Math.floor() 通过该函数计算后的返回值是舍去小数点后的数值 如:Math.floor(3.2)返回3 Math.floor(3.9)返回3 Math.floor(3.0)返回3 Math.ceil() ceil函数只要小数点非0,将返回整数部分+1 如:Math.ceil(3.2)返回4 Math.ceil(3.9)返回4 Math.ceil(3.0)返回3*/ }
本文来自博客园,作者:綦霖,转载请注明原文链接:https://www.cnblogs.com/yc-weblog/p/16013572.html