BigDecimal保留两位小数

2023-11-16

天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。


保留两位小数

三种方式保留两位小数的方法

1. setScale

此方法可以设置保留位数和保留的规则
得到的同样是一个BigDecimal类型的值

        Double d = 123.12345;
        BigDecimal bd = new BigDecimal(d);
        //调用函数 参数2表示保留两位小数,ROUND_HALF_UP表示四舍五入
        //bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
        BigDecimal bd1 = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
        System.out.println("bd1: "+bd1);

2. DecimalFormat

此方法使用匹配规则
得到的是一个字符串类型的值

        Double d = 123.12345;
        BigDecimal bd = new BigDecimal(d);
        DecimalFormat df = new DecimalFormat("#0.00");
        String str1 = df.format(bd);
        //输出结果为123.12
        System.out.println(str1);

3. String.Format

此方法是字符串自带的方法
得到的是一个字符串类型的值

        Double d = 123.12345;
        BigDecimal bd = new BigDecimal(d);
        String str2 = String.format("%.2f",bd);
        System.out.println("str2: "+str2);

以上直接食用
分割线-----------------------------------------------------------------------------------------------------------------
以下是拓展

四种保留小数规则对比

package com.data.controller;

import java.math.BigDecimal;
import java.text.DecimalFormat;

/**
 * @Description:  BigDecimal保留两位小数测试
 * @Version 1.0
 * @Author 李白
 * @Date 2023/7/14 星期五 9:47
 */
public class BigDecimalTest {

    public static void main(String[] args) {

        //setScale
//        Double d = 123.12345;
//        BigDecimal bd = new BigDecimal(d);
//        //调用函数 参数2表示保留两位小数,ROUND_HALF_UP表示四舍五入
//        //bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
//        BigDecimal bd1 = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
//        System.out.println("bd1: "+bd1);

        //DecimalFormat
//        Double d = 123.12345;
//        BigDecimal bd = new BigDecimal(d);
//        DecimalFormat df = new DecimalFormat("#0.00");
//        //输出结果为123.12
//        System.out.println(df.format(bd));

        //String.Format
//        Double d = 123.12345;
//        BigDecimal bd = new BigDecimal(d);
//        String str2 = String.format("%.2f",bd);
//        System.out.println("str2: "+str2);

        //整数位为0
        BigDecimal bdt1 = new BigDecimal(0.0);
        BigDecimal bdt2 = new BigDecimal(0.1);
        BigDecimal bdt3 = new BigDecimal(0.10);
        BigDecimal bdt4 = new BigDecimal(0.01);
        BigDecimal bdt5 = new BigDecimal(0.001);
        BigDecimal bdt6 = new BigDecimal(0.100);
        //整数位为一位整数
        BigDecimal bdt7 = new BigDecimal(1.0);
        BigDecimal bdt8 = new BigDecimal(1.1);
        BigDecimal bdt9 = new BigDecimal(1.00);
        BigDecimal bdt10 = new BigDecimal(1.10);
        BigDecimal bdt11 = new BigDecimal(1.01);
        BigDecimal bdt12 = new BigDecimal(1.001);
        BigDecimal bdt13 = new BigDecimal(1.100);
        //整数位为两位整数
        BigDecimal bdt14 = new BigDecimal(10.001);
        //整数位为三位整数
        BigDecimal bdt15 = new BigDecimal(101.001);

        //规则一 在整数位和小数位都满足两位或者以上的时候不受影响,当整数位或小数位少于两位时会自动填充为0
        String dp1 = "00.00";
        //规则二 是满足所有条件的保留两位小数规则,当小数位不满两位会自动填充为0,当整数位不满两位不会填充
        String dp2 = "#0.00";
        //规则三 在整数位不满两位时不会自动填充,当小数位不满两位时也不会填充,且在小数位前两位都为0的情况下会将小数点和小数位都剔除,当小数位前一位不为0后一位为0则只会保留一位不为0的小数
        String dp3 = "##.00";
        //规则四 整数位为一位且为0则缺失,小数位保留两位,不足两位会自动填充
        String dp4 = "##.##";

        DecimalFormat df1 = new DecimalFormat(dp1);
        DecimalFormat df2 = new DecimalFormat(dp2);
        DecimalFormat df3 = new DecimalFormat(dp3);
        DecimalFormat df4 = new DecimalFormat(dp4);

        //保留两位小数
        System.out.println("-------------------00.00--------------------");
        System.out.println(df1.format(bdt1));
        System.out.println(df1.format(bdt2));
        System.out.println(df1.format(bdt3));
        System.out.println(df1.format(bdt4));
        System.out.println(df1.format(bdt5));
        System.out.println(df1.format(bdt6));
        System.out.println(df1.format(bdt7));
        System.out.println(df1.format(bdt8));
        System.out.println(df1.format(bdt9));
        System.out.println(df1.format(bdt10));
        System.out.println(df1.format(bdt11));
        System.out.println(df1.format(bdt12));
        System.out.println(df1.format(bdt13));
        System.out.println(df1.format(bdt14));
        System.out.println(df1.format(bdt15));

        System.out.println("-------------------#0.00--------------------");
        System.out.println(df2.format(bdt1));
        System.out.println(df2.format(bdt2));
        System.out.println(df2.format(bdt3));
        System.out.println(df2.format(bdt4));
        System.out.println(df2.format(bdt5));
        System.out.println(df2.format(bdt6));
        System.out.println(df2.format(bdt7));
        System.out.println(df2.format(bdt8));
        System.out.println(df2.format(bdt9));
        System.out.println(df2.format(bdt10));
        System.out.println(df2.format(bdt11));
        System.out.println(df2.format(bdt12));
        System.out.println(df2.format(bdt13));
        System.out.println(df2.format(bdt14));
        System.out.println(df2.format(bdt15));
        System.out.println("-------------------##.00--------------------");
        System.out.println(df3.format(bdt1));
        System.out.println(df3.format(bdt2));
        System.out.println(df3.format(bdt3));
        System.out.println(df3.format(bdt4));
        System.out.println(df3.format(bdt5));
        System.out.println(df3.format(bdt6));
        System.out.println(df3.format(bdt7));
        System.out.println(df3.format(bdt8));
        System.out.println(df3.format(bdt9));
        System.out.println(df3.format(bdt10));
        System.out.println(df3.format(bdt11));
        System.out.println(df3.format(bdt12));
        System.out.println(df3.format(bdt13));
        System.out.println(df3.format(bdt14));
        System.out.println(df3.format(bdt15));
        System.out.println("-------------------##.##--------------------");
        System.out.println(df4.format(bdt1));
        System.out.println(df4.format(bdt2));
        System.out.println(df4.format(bdt3));
        System.out.println(df4.format(bdt4));
        System.out.println(df4.format(bdt5));
        System.out.println(df4.format(bdt6));
        System.out.println(df4.format(bdt7));
        System.out.println(df4.format(bdt8));
        System.out.println(df4.format(bdt9));
        System.out.println(df4.format(bdt10));
        System.out.println(df4.format(bdt11));
        System.out.println(df4.format(bdt12));
        System.out.println(df4.format(bdt13));
        System.out.println(df4.format(bdt14));
        System.out.println(df4.format(bdt15));

        System.out.println("---------------------------------------");
    }
}

控制台打印

-------------------00.00--------------------
00.00
00.10
00.10
00.01
00.00
00.10
01.00
01.10
01.00
01.10
01.01
01.00
01.10
10.00
101.00
-------------------#0.00--------------------
0.00
0.10
0.10
0.01
0.00
0.10
1.00
1.10
1.00
1.10
1.01
1.00
1.10
10.00
101.00
-------------------##.00--------------------
.00
.10
.10
.01
.00
.10
1.00
1.10
1.00
1.10
1.01
1.00
1.10
10.00
101.00
-------------------##.##--------------------
0
0.1
0.1
0.01
0
0.1
1
1.1
1
1.1
1.01
1
1.1
10
101
---------------------------------------

Process finished with exit code 0

总结

对比打印结果可知

  • 第一种00.00在整数位和小数位都满足两位或者以上的时候不受影响,当整数位或小数位少于两位时会自动填充为0

  • 第二种#0.00是满足所有条件的保留两位小数规则,当小数位不满两位会自动填充为0,当整数位不满两位不会填充

  • 第三种##.00整数位为一位且为0则缺失,小数位保留两位,不足两位会自动填充

  • 第四种##.##在整数位不满两位时不会自动填充,当小数位不满两位时也不会填充,且在小数位前两位都为0的情况下会将小数点和小数位都剔除,当小数位前一位不为0后一位为0则只会保留一位不为0的小数

    综上,保留两位小数时最好用的是#0.00


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BigDecimal保留两位小数 的相关文章

随机推荐

  • Samba CentOS 7 安装

    安装步骤 Samba是在Linux与Windows系统间共享文件和打印机的标准协议 要在CentOS上安装Samba 可以按以下步骤操作 安装Samba相关包 yum install samba samba client samba com
  • 【Linux】SSH、shell

    最近GET到一个学习方法 了解一个新知识是什么的最快方法 就是去看它官网首页最大的那行字 一 比如SSH到底是什么 如下图 答案 SSH就是一个安全的shell应用程序 SSH是一个软件包 使系统登陆和文件传输都建立在一个安全的网络上 二
  • C++11新特性——智能指针之shared_ptr

    此课件及源代码来自B站up主 码农论坛 该文章仅作为本人学习笔记使用 1 智能指针shared ptr shared ptr共享它指向的对象 多个shared ptr可以指向 关联 相同的对象 在内部采用计数机制来实现 当新的shared
  • Java-如何使用Java将图片和文字拼接在一起(并非是给图片加水印)

    之前有遇到一个问题 问题背景 项目中 有一个功能 管理端可以将客户创建的小程序码下载到本地 方便客户将对应门店的小程序码打印出来并张贴到门店 做门店的引流和会员入会 具体问题 当小程序码的数量较少的时候 我们是后端将小程序码的分组信息和小程
  • OnCheckedChangeListener和setChecked之间冲突问题解决

    今天遇到一个奇怪的问题 hdmi设备的usb触屏线 Usb接口 在拔掉的时候 界面的Checkbox Switch等控件会响应CompoundButton OnCheckedChangeListener 很明显 通过debug debug模
  • bugku ctf web4 (看看源代码吧)

    打开打开 刚刚有个sb问我借lol号玩 浪费时间 继续干正事 随便输入后 提示 再好好看看 出题人语文肯定不好 应该是这个 再 吧 那我们查看源码
  • 深聊性能测试,从入门到放弃之:Locust性能自动化(一)初识Locust

    初识Locust 1 Locust基本介绍 1 1 引言 1 2 简介 2 Locust安装方式 2 1 安装 locust 2 2 安装pyzmq 2 3 安装成功确认 3 Locust 参数说明 3 1 参数信息 3 2 参数信息解析
  • Android视频开发

    http www jianshu com u a32db45d4859
  • Windows 批量重命名文件(支持正则表达式)

    今天整理了一批文件 命名有点上乱 所以想批量修改一下 在网上找了一工具 叫Ant Renamer 相当不错 主界面如下 操作步骤很简单 1 添加文件或文件夹 支持自动递所有子目录 2 操作 在这里设置重命名的参数 3 然后点击 开始 即可
  • 读取文件大小(小数点后保留两位)

    获取文件大小 public static String getSize File file double d DecimalFormat df new DecimalFormat 00 long length file length if
  • 配额限制出现“limit函数未实现”解决方法

    磁盘配额限制的步骤分为 安装quota和xfsprogs软件包 制定挂载条件 mount o usrquota grpquota dev 卷组名 逻辑卷名 限制磁盘使用量空间 xfs quota x c limit u bsoft 80M
  • 时序图中if else画法

    进入扩展程序安装 File gt Settings gt Plugins gt Browse Repositories 搜索 SequenceDiagram 点击右边 Install 安装 然后重启 IDEA 在需要生成流程时序图的方法 右
  • 企业网络安全设计与综合实施方案

    1 企业网络安全需求 企业网络安全需求大致分为三部分 但是在设计对应的网络安全技术方案时 通常根据企业结构划分网络 从五个方面制定方案 某游戏公司当前的企业网络拓扑如右图所示 考虑到该公司运行的业务可能面临众多安全威胁 需要网络实施工程师针
  • 《离散数学》速成-练习题答案(含题目)

    离散数学 速成 https blog csdn net aiqq136 article details 113445181 课时1 课时2 课时3 课时4 课时5 课时6 课时7 课时8 课时9 课时10 课时11 课时12 课时13 课时
  • Scrapy初识与创建

    Scrapy 是一套基于基于Twisted的异步处理框架 纯python实现的爬虫框架 用户只需要定制开发几个模块就可以轻松的实现一个爬虫 用来抓取网页内容以及各种图片 非常之方便 一 安装 Scrapy框架因为功能十分强大 所以依赖很多库
  • coverage代码覆盖率测试工具:基本原理分析与使用

    coverage环境描述 本文环境python3 5 2 coverage版本4 3 1 coverage概述 代码覆盖率工具主要是为了检查测试用例覆盖了多少业务处理代码 在Django项目中 通过编写的测试用例 来检查后端业务逻辑接口的逻
  • Struts2验证框架

    1 Struts2提供了验证框架 功能强大而且简单易用 帮助用户做了很多事情 使得用户不必从头开发 那么一个好的验证框架需要考虑哪些因素呢 1 验证功能的复用性 比如都是对一个int数据类型的验证 验证的是它的数据范围 如果验证功能抽象的好
  • Intellij IDEA炫酷的插件

    1 日晒主题 Solarized Themes 背景图可是另外的插件设置的哈Background Image Plus 在 IntelliJ 系列编辑器 中循环显示随机背景图像 可以通过设置页 Settings gt Appearance
  • 别再问我怎么Python打包成exe了!

    作者 Python进阶者来源 Python爬虫与数据挖掘 阅读文本大概需要 10 分钟 前言 也许我们不一定是专业的程序员 但是我们仍然可以通过代码提高我们的效率 尽量少加班 多陪陪媳妇 如果有 再不行 让代码替我们干着重复的工作 我们有节
  • BigDecimal保留两位小数

    天行健 君子以自强不息 地势坤 君子以厚德载物 每个人都有惰性 但不断学习是好好生活的根本 共勉 文章均为学习整理笔记 分享记录为主 如有错误请指正 共同学习进步 BigDecimal保留两位小数 保留两位小数 1 setScale 2 D