• java 保留截取小数点后2/3/4/5/6位小数


    小数点后保留六位小数的几种方法

    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*/  
                  
     }

  • 相关阅读:
    Dubbo学习记录(一)
    Quartz定调度简单案例
    oracle中批量生成字段类型的脚本
    MsSQLserver中修改字段值系统自动生成的脚本
    根据oracle的主键列生成SQLserver的主键
    SQLServer2005如何批量修改架构名
    win10 下oracle tns通过IP无法访问的解决办法
    PD PDM模型中关系设置为概念模型样式
    PB12.5.2安装
    Java Web 项目目录规范
  • 原文地址:https://www.cnblogs.com/yangchengdebokeyuan/p/16013572.html
Copyright © 2020-2023  润新知