bigdecimal保留2位小数_java bigdecimal保留两位小数

bigdecimal保留2位小数_java bigdecimal保留两位小数本篇分享Java注解方法实现BigDecimal保留两位小数!欢迎打卡学习!

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!

博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步!

吾等采石之人,应怀大教堂之心,愿我们奔赴在各自的热爱里…

一、业务场景

在很多商城看数据的业务中后台会定义很多BigDecimal类型的字段,但是数据库查询返回可能对于数值尾数过多
在这里插入图片描述

解决方案:前端或者后端做处理都行,但是正常还是推荐后台截取,后台通过注解在实体类上,可以实现一次操作,让所有的方法返回的对应值均保留对应的小数(自定义实现)


我们创建一个注解类,统一帮助我们实现对BigDecimal此类型字段数值的封装操作

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.math.BigDecimal;
 
public class BigDecimalSerializer extends JsonSerializer<BigDecimal> { 
   
    public BigDecimalSerializer() { 
   
    }
 
    public void serialize(BigDecimal value, JsonGenerator gen, SerializerProvider serializers) throws IOException { 
   
        if (value != null) { 
   
            BigDecimal number = value.setScale(2, BigDecimal.ROUND_HALF_UP);
            gen.writeNumber(number);
        } else { 
   
            gen.writeNumber(value);
        }
 
    }
}

创建完注解类后,具体什么字段需要保留两位有效数字,就在对应的字段上加上此注解

    @JsonSerialize(using = BigDecimalSerializer.class)
    private BigDecimal price;

最后返回的值就是保留两位有效数字的


二、相关方法

构造器描述

BigDecimal(int)     创建一个具有参数所指定整数值的对象。
BigDecimal(double)  创建一个具有参数所指定双精度值的对象。
BigDecimal(long)    创建一个具有参数所指定长整数值的对象。
BigDecimal(String)  创建一个具有参数所指定以字符串表示的数值的对象。

方法

add(BigDecimal)       BigDecimal对象中的值相加,然后返回这个对象。
subtract(BigDecimal)  BigDecimal对象中的值相减,然后返回这个对象。
multiply(BigDecimal)  BigDecimal对象中的值相乘,然后返回这个对象。
divide(BigDecimal)    BigDecimal对象中的值相除,然后返回这个对象。
toString()BigDecimal对象的数值转换成字符串。
doubleValue()BigDecimal对象中的值以双精度数返回。
floatValue()BigDecimal对象中的值以单精度数返回。
longValue()BigDecimal对象中的值以长整数返回。
intValue()BigDecimal对象中的值以整数返回。

4舍5入

BigDecimal.setScale()方法用于格式化小数点
setScale(1)表示保留一位小数,默认用四舍五入方式 
setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3 
setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4 
setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入,2.35变成2.4
setScaler(1,BigDecimal.ROUND_HALF_DOWN)四舍五入,2.35变成2.3,如果是5则向下舍
setScaler(1,BigDecimal.ROUND_CEILING)接近正无穷大的舍入
setScaler(1,BigDecimal.ROUND_FLOOR)接近负无穷大的舍入,数字>0和ROUND_UP作用一样,数字<0和ROUND_DOWN作用一样
setScaler(1,BigDecimal.ROUND_HALF_EVEN)向最接近的数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。

感兴趣的可以继续学习BigDecimal相关知识


?非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞? 关注❤️ 分享? 留言?thanks!!!

?愿我们奔赴在各自的热爱里!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/190356.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 图形推理选择题_图形逻辑题解题技巧

    图形推理选择题_图形逻辑题解题技巧在一些公司的招聘过程中,多少都会在笔试过程中遇到行测题,这些行测题如果没有事先做过一些针对性的训练,还是会感觉挺费劲的,本博客主要汇总行测题中的图形推理题的一些解题思路,供大家参考。图形推理题思考要素点、线、面、角、素、对称、平移、旋转、叠加点:点的数量(黑点、圆点、交点)、直线与直线交点、直线与曲线交点、图形与图形之间的交点、线:图形中线条比较多的时候考虑数线数量、线段笔画、一笔画问…

    2022年9月3日
    3
  • cas单点登录的时序图

    cas单点登录的时序图cas系统介绍这里有详细的cas系统介绍:点击查看cas单点登录系统时序图

    2022年6月3日
    33
  • Cache基础知识OR1200在ICache一个简短的引论

    Cache基础知识OR1200在ICache一个简短的引论

    2022年1月9日
    36
  • 万能乘法速算法大全_小学生两位数乘法容易出错?只因没掌握这个“万能”速算法…

    万能乘法速算法大全_小学生两位数乘法容易出错?只因没掌握这个“万能”速算法…儿童节快乐两位数乘法,在小学阶段的数学学习当中,是经常遇到的。尤其是小学三、四年级,每当遇到这类乘法,小学生都非常容易出错,甚至一算就错。原因是,一些比较大的两位数,在用列竖式法相乘时,会出现连续进位,一旦有一个环节,进位失误了,就会导致整个乘法出现错误,结果为零分。因此,这类运算,很让老师头疼。那么,有没有实用的速算法,可以解决这类乘法问题,而且不出错呢?有!今天,就分享一种“万能”两…

    2022年6月7日
    32
  • VMware 虚拟机里连不上网的三种解决方案

    VMware 虚拟机里连不上网的三种解决方案运行环境:VMwareWorkstation-kalilinux32位问题:kalilinux虚拟机连不上网解决方案适用范围:VMwareWorkstation安装的所以系统在VMware虚拟机里启用kalilinux时,总是连不上网,ping百度时总出现:未知的名称或服务第一种解决方案是在虚拟机设置里,找到“网络适配器”,右边的网络连接选择“NAT模…

    2022年6月26日
    44
  • 基于BGP协议的广域网流量调度SDN控制器在银行业的部署实践「建议收藏」

    基于BGP协议的广域网流量调度SDN控制器在银行业的部署实践「建议收藏」作者:王逊摘要:SDN作为网络自动化(NetworkAutomation)一种应用场景,从2009年Openflow的提出后在近几年已经进入到快速发展、现网部署阶段。SD-WAN实际上就是将SDN和网络自动化的思想和技…

    2022年9月6日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号