精华内容
下载资源
问答
  • double保留两位小数
    2021-09-15 14:31:09

    方法1(四舍五入,返回值是一个字符串)

        DecimalFormat decimalFormat = new DecimalFormat("0.00");
        String format = decimalFormat.format(5.3687545);
    

    方法2(四舍五入,返回值是一个字符串)

    	String format = String.format("%.2f", 5.3687545);
    

    方法3(返回值是double,UP向上取整 5.37,DOWN向下取整5.36)

    	// 新方法,如果不需要四舍五入,可以使用RoundingMode.DOWN
    	BigDecimal bg = new BigDecimal(d).setScale(2, RoundingMode.UP);
    	double v = bg.doubleValue();
    
    更多相关内容
  • 主要介绍了java使double类型保留两位小数的方法,大家参考使用吧
  • double保留两位小数

    万次阅读 2019-03-15 00:49:51
    我们都知道double和float都是浮点型,在转型或者比较的时候可能出现问题,这里讲一下怎么针对double类型做精度处理

    我们都知道double和float都是浮点型,在转型或者比较的时候可能出现问题,这里讲一下怎么针对double类型做精度处理

    返回类型为double(四舍五入)

    1. 使用Math.round转成long再转回double
            double dou = 3.1487426;
            dou = (double) Math.round(dou * 100) / 100;   
            System.out.println(dou);
    
    1. 使用BigDecimal进行格式化
            double dou = 3.1487426;
            BigDecimal bigDecimal = new BigDecimal(dou).setScale(2, RoundingMode.HALF_UP);
            double newDouble = bigDecimal.doubleValue();
            System.out.println(newDouble);
    

    返回类型是 String

    1. 使用String.format()格式化(四舍五入)
            double dou = 3.1487426;
            String douStr = String.format("%.2f", dou)
            System.out.println(douStr);
    
    1. 使用NumberFormat进行格式化(四舍五入)
            double dou = 3.1487426;
            NumberFormat numberFormat = NumberFormat.getNumberInstance();
            numberFormat.setMaximumFractionDigits(2);
            // numberFormat.setRoundingMode(RoundingMode.UP);  //默认的模式就是四舍五入,可以省略
            String douStr = numberFormat.format(dou)
            System.out.println(douStr);
    
    1. 使用BigDecimal进行格式化(四舍五入)
            double dou = 3.1487426;
            DecimalFormat decimalFormat = new DecimalFormat("#.00");
            String str = decimalFormat.format(dou);
            System.out.println(str);
    
    1. 去除末尾多余的 0
        /**
         * 格式化数值(四舍五入),去除末尾无效的0
         *
         * @param value 值
         * @param scale 保留小数位数
         * @return
         */
        public static String scaleTrimZero(Double value, int scale) {
            if (Objects.isNull(value)) {
                return "";
            }
            BigDecimal bigDecimal = BigDecimal.valueOf(value).setScale(scale, RoundingMode.HALF_UP);
            String str = bigDecimal.toString();
            if (str.contains(".")) {
                str = str.replaceAll("0+$", "");
                str = str.replaceAll("[.]$", "");
            }
            return str;
        }
    
    展开全文
  • double保留两位小数的不同方法

    double保留两位小数的不同方法:

    1、简单的四舍五入方法:

    /**
    *需要n位小数就乘以10的n次方再除以n次方
    *通过round和round2的输出可以发现round2会精度缺失
    *所以我们在进行计算之后再取小数点后的位数
    */
    public static double formatDouble(double percent){
        double round = (double) Math.round(percent * 100) / 100;
        double round2 = round + 0.1;
        System.out.println("round:"+round);
        System.out.println("round2:"+round2);
        return round;
    }
    

    2、通过BigDecimal

    /**
    *发现个奇怪的问题,这个方法的四舍五入不算真正的四舍五入,只要后面一位有值就会往前进一位,
    *例如:123.3333取两位小数之后是123.34。
    */
    public static double formatDouble2(double d){
        //旧的方法,不推荐使用
        BigDecimal bd = new BigDecimal(d).setScale(2,BigDecimal.ROUND_HALF_UP);
        //新的方法,如果不需要四舍五入可以使用RoundingMode.DOWN
        BigDecimal bd = new BigDecimal(d).setScale(2,RoundingMode.UP);
        return bd.doubleValue();
    }
    

    3、通过NumberFormat

    /**
    *这个方法的四舍五入也是不算真正的四舍五入,只要后面一位有值就会往前进一位,
    *例如:123.3333取两位小数之后是123.34。
    */
    public static double formatDouble3(double d){
        NumberFormat nf = NumberFormat.getNumberInstance();
        //保留两位小数
        nf.setMaximumFractionDigits(2);
        //如果不需要四舍五入可以使用RoundingMode.DOWN
        nf.setRoundingMode(RoundingMode.UP);
        return nf.format(d);
    }
    

    4、通过DecimalFormat

    /**
     * DecimalFormat的pattern如果写#.00,当小数点前为0时,不显示0,例如:.23。
     * 如果写0.00,就会显示小数点前的0,例如:0.23
     */
    public staitc double formatDouble4(double d){
        DecimalFormat df = new DecimalFormat("#.00");
        return Double.valueOf(df.format(d));
    }
    

    5、String.format方法

    //只适合用于程序中的格式化输出
    public static String formatDouble5(double d){
        return String.format("%.2f",d);
    }
    

    输入:12345.6789

    输出结果:

    1、12345.68
    2、12345.68
    3、12,345.68
    4、12345.68
    5、12345.68

    本文转自:https://www.cnblogs.com/nayitian/p/3214178.html

    结合这位博主提供的方法,加了一些更细的点,有不正确的地方欢迎指正~

    展开全文
  • @JsonSerialize作用: 此注解用于属性或者getter...下面我想说4个例子:1、保留两位小数 2、保留整数 3、将ms转换成s 4、将日期格式化yy-mm-dd1、保留两位小数package org.jeecg.oyz.common.annotation; import c...

    @JsonSerialize作用:


    此注解用于属性或者getter方法上,用于在序列化时嵌入我们自定义的代码,比如序列化一个double时在其后面限制两位小数点。

    一、定义方法


    下面我想说4个例子:1、保留两位小数 2、保留整数 3、将ms转换成s  4、将日期格式化yy-mm-dd

    1、保留两位小数

    package org.jeecg.oyz.common.annotation;
    
    import com.fasterxml.jackson.core.JsonGenerator;
    import com.fasterxml.jackson.databind.JsonSerializer;
    import com.fasterxml.jackson.databind.SerializerProvider;
    
    import java.io.IOException;
    import java.text.DecimalFormat;
    
    /**
     * 用户将double类型的数据格式化成小数点后两位的字符串数据:如输出为“900.00”.
     */
    public class OyzDoubleSerialize extends JsonSerializer<Double> {
    
        private DecimalFormat df = new DecimalFormat("#0.00");
    
        public OyzDoubleSerialize() {
        }
    
        @Override
        public void serialize(Double o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
            if(o.toString() != null && !"-".equals(o)) {
                Double dd = Double.parseDouble(o.toString());
                jsonGenerator.writeString(df.format(dd));
            } else{
                jsonGenerator.writeString(o.toString());
            }
        }
    
    
    }

    2、保留整数

    import com.fasterxml.jackson.core.JsonGenerator;
    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.databind.JsonSerializer;
    import com.fasterxml.jackson.databind.SerializerProvider;
    
    import java.io.IOException;
    import java.text.DecimalFormat;
    
    /**
     * 用户将double类型的数据格式化成小数点后无保留字符串数据:如输出为“900”.
     *
     */
    public class CustomDoubleIntSerialize extends JsonSerializer<Double>{
    
        private DecimalFormat df = new DecimalFormat("##");
        
        @Override  
        public void serialize(Double value, JsonGenerator jgen,  
                SerializerProvider provider) throws IOException,  
                JsonProcessingException {  
            jgen.writeString(df.format(value));  
        }  
        
    }
    

    3、将ms转换成s

    public class Date2LongSerializer extends JsonSerializer<Date> {
         
            @Override
            public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
                jsonGenerator.writeNumber(date.getTime() / 1000);
            }
        }

    4、将日期格式化yy-mm-dd

    import com.fasterxml.jackson.core.JsonGenerator;
    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.databind.JsonSerializer;
    import com.fasterxml.jackson.databind.SerializerProvider;
    
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    /**
     * 时间序列化工具,直接将时间类型的转为yyyy-MM-dd类型的数据
     * 使用方法:在实体的get方法上直接加@JsonSerialize(using = CustomDateSerialize.class)
     * @author Shine
     */
    public class CustomDateSerialize extends JsonSerializer<Date> {
    
        //定义时间格式
        private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    
        @Override
        public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
            jsonGenerator.writeString(sdf.format(date));
        }
    }

    二、举例:关于保留两位小数注解方法使用

    @JsonSerialize(using = OyzDoubleSerialize.class)
    public Double getActPayBackMoney() {
        return this.actPayBackMoney;
    }
    展开全文
  • Java中double保留两位小数的各种方法

    万次阅读 2020-09-10 21:05:03
    目录一、使用BigDecimal的setScale方法二、使用Sting自带的format方法三、使用NumberFormat设置最大小数位数四、使用DecimalFormat,#.00为保留两位小数 一、使用BigDecimal的setScale方法 double one = 5.864; ...
  • "-".equals(o)) { Double dd=Double.parseDouble(o.toString()); jsonGenerator.writeString(df.format(dd)); } else{ jsonGenerator.writeString(o.toString()); } } } 在需要使用的实体字段上加上注解即可。@...
  • public class JsonSerializerUtils extends... public void serialize(Double aDouble, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { if (Objects.nonNull(aDouble)) {
  • Java中double保留两位小数的四种方法

    万次阅读 2020-05-02 17:55:37
    一、使用BigDecimal的setScale方法 double one = 5.26419; BigDecimal two = new ...double three = two.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); 二、使用DecimalFormat double one = 5.26419...
  • double保留两位小数,返回double

    千次阅读 2019-01-21 10:05:37
    3 4 5 6 7 8 9 10 ...private Double get(){ ... double a=1.0;... return new Double(df.format(a).toString()); } private double get(){ DecimalFormat df=new DecimalFormat("0.
  • 这里写自定义目录标题double保留两位小数,如果小数最后一位是0,则保留一位小数 double保留两位小数,如果小数最后一位是0,则保留一位小数 /** * double转换 */ private String doubleTrans(double d) { if (Math...
  • double 保留两位小数

    2019-02-13 09:55:22
    double保留两位小数,四种方法 package com.math; import java.text.DecimalFormat; import java.text.NumberFormat; /** * Double保留两位小数,四舍五入 * @author luolei * @date 2019年2月13日 */ public...
  • js-double保留两位小数

    千次阅读 2019-02-19 23:38:56
    方法一:使用toFixed保留两位小数 var num1 = 55.3715;  console.log(num1.toFixed(2)); 打开浏览器调试工具,可以看到如下打印结果,55.37保留了两位小数,之后的两位舍弃 ...
  • c# 让double保留两位小数

    千次阅读 2018-06-26 15:54:51
    1、Math.Round(0.333333,2);//按照四舍五入的国际标准 2、 double dbdata=0.335333;...//默认为保留两位 还有一个类似的方法,但是不提倡: double d1 = 0.335333; string d2 = d1.ToString("...
  • Java使double保留两位小数的多方法 Java保留两位小数 方式一:保留两位小数 DecimalFormat df = new DecimalFormat("#.00"); double d1 = 1.23456 double d2 = 2.0; double d3 = 0.0; ...
  • java double类型保留两位小数4种方法

    千次阅读 2021-03-16 10:12:33
    java使double保留两位小数的多方法 java使double保留两位小数的多方法 java保留两位小数 mport java.text.DecimalFormat; DecimalFormat df = new DecimalFormat ... Double 数据保留两位小数一:五舍六入 package ...
  • spring boot 对double保留两位小数

    千次阅读 2021-03-15 11:22:08
    原spring boot 对double保留两位小数一:全局设置。package com.mszl.utils;import com.fasterxml.jackson.core.JsonGenerator;import com.fasterxml.jackson.databind.JsonSerializer;import ...
  • Jackson转换实体 double 保留两位小数

    千次阅读 2019-04-03 22:51:27
    今天构建做个会员级别的实体类,里面的percent为double类型,然后问题来了,在返回客户端的json数据中,double出现的精度问题,之前我是直接前端解决了算。。。 现在想想,觉得这事应该交由后端处理吧。毕竟数据也...
  • double保留2位小数

    2022-05-19 17:04:19
    double常见的保留小数点位数方式
  • 代码如下: mport java.text.DecimalFormat;  ...DecimalFormat df = new DecimalFormat("######0.00");...double d1 = 3.23456  double d2 = 0.0; double d3 = 2.0; df.format(d1);  df.format
  • 根据业务,需要通过后端给前端返回金额值,一般需要保留两位小数,使用jackson转换对象列表 import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonProcessingException; ...
  • java使double保留两位小数的多方法

    千次阅读 2017-03-31 09:44:13
    import java.text.DecimalFormat; DecimalFormat df = new DecimalFormat("######0.00");...double d1 = 3.23456  double d2 = 0.0; double d3 = 2.0; df.format(d1);  df.format(d2);  df.format
  • 将一个double型数值保留两位小数

    千次阅读 2021-06-05 07:54:11
    将一个double型数值保留两位小数在处理数值运算的时候,有时候会遇到保留几位小数的需求,下面是一个保留两位小数的简单方法。/*** 将数据保留两位小数*/private double getTwoDecimal(double num) {DecimalFormat ...
  • String转double保留两位小数

    万次阅读 2015-07-07 18:00:11
     关于此问题,网上一些答案不太靠谱 通过实践,此处只提供一个办法: ... Double cny = Double.parseDouble(price_CNY);//6.2041 这个是转为double类型 DecimalFormat df = new DecimalFormat("...
  • C#让double保留2位小数

    千次阅读 2022-04-28 10:05:14
    这个是我最常用的一个方法 //按照四舍五入的国际标准 ...//默认为保留两位 还有一个类似的方法,很多人都有说过但是也都不提倡,可以看下: double a= 0.33533; string b= a.ToString("0.00"); b="0.33" ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 59,331
精华内容 23,732
关键字:

double保留两位小数