iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >BigDecimal使用总结
  • 110
分享到

BigDecimal使用总结

javaBigDecimal 2023-09-03 12:09:15 110人浏览 八月长安
摘要

对于超过16位的大型数字,需要用到Java在java.math包中提供的api类BigDecimal,而且也不是传统的+-*/,而是调用对应的方法。 1.创建对象 使用new的方式创建BigDecim

对于超过16位的大型数字,需要用到Java在java.math包中提供的api类BigDecimal,而且也不是传统的+-*/,而是调用对应的方法。

1.创建对象

使用new的方式创建BigDecimal对象

BigDecimal a = new BigDecimal("100");//字符串构造

另外建议数值运算使用字符串的方式创建对象,因为:

        BigDecimal c = new BigDecimal(1.2);        System.out.println(c);

在这里插入图片描述

jdk的描述:

参数类型为double的构造方法的结果有一定的不可预知性。有人可能认为在Java中写入newBigDecimal(0.1)所创建的BigDecimal正好等于 0.1(非标度值 1,其标度为 1),但是它实际上等于0.1000000000000000055511151231257827021181583404541015625。这是因为0.1无法准确地表示为 double(或者说对于该情况,不能表示为任何有限长度的二进制小数)。这样,传入到构造方法的值不会正好等于 0.1(虽然表面上等于该值)。

2、另一方面,String 构造方法是完全可预知的:写入 newBigDecimal(“0.1”) 将创建一个 BigDecimal,它正好等于预期的 0.1。因此,比较而言,通常建议优先使用String构造方法

另外,当你用了非字符串构造创建了一个BigDecimal对象时,如果进行了除运算,当结果有余数的时候会报java.lang.ArithmeticException这个异常——血与泪的教训

2.加减乘除及指定类型返回

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

3.保留小数

在进行除法运算的时候,针对可能出现的小数产生的计算,必须要多传两个参数

divide(BigDecimal"保留小数点后几位小数""舍入模式参数")

其中舍入参数:

ROUND_CEILING    //向正无穷方向舍入ROUND_DOWN    //向零方向舍入ROUND_FLOOR    //向负无穷方向舍入ROUND_HALF_DOWN    //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向下舍入, 例如1.55 保留一位小数结果为1.5ROUND_HALF_EVEN    //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP,如果是偶数,使用ROUND_HALF_DOWNROUND_HALF_UP    //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向上舍入, 1.55保留一位小数结果为1.6,也就是我们常说的“四舍五入”ROUND_UNNECESSARY    //计算结果是精确的,不需要舍入模式ROUND_UP    //向远离0的方向舍入

来源地址:https://blog.csdn.net/weixin_44688973/article/details/127388364

--结束END--

本文标题: BigDecimal使用总结

本文链接: https://www.lsjlt.com/news/392166.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • BigDecimal使用总结
    对于超过16位的大型数字,需要用到Java在java.math包中提供的API类BigDecimal,而且也不是传统的+-*/,而是调用对应的方法。 1.创建对象 使用new的方式创建BigDecim...
    99+
    2023-09-03
    java BigDecimal
  • w3m使用总结
    ...
    99+
    2023-01-31
    w3m
  • redis 使用总结
    最近一段时间与redis接触比较频繁。发现有些东西还是工作中经常会用到的,自己也花了点时间巩固下。本篇文章主要是以总结性的方式梳理,因为redis的主题很大,任何一个技术点展开都是几篇文章的量。也可以说这篇...
    99+
    2022-10-18
  • sqlite3使用总结
           OS X自从10.4后把SQLite这套相当出名的数据库软件,放进了作业系统工具集里。OS X包装的是第三版的SQLite,又称SQLite3。这套软件有几个特色:软件属于公共财(public domain),SQLite可说...
    99+
    2023-01-31
  • clipboard.js使用总结
    目录(1)介绍: (2)clipboard复印内容的方式有 (3)Function操作有两种: (4)通过属性返回复印的内容 (5)函数和属性的兼容方式 (1)介绍: clipbo...
    99+
    2022-11-12
  • java中BigDecimal的介绍及使用,BigDecimal格式化,BigDecimal常见问题
    文章目录 一、BigDecimal概述二、BigDecimal常用构造方法三、BigDecimal常用方法四、BigDecimal进阶BigDecimal的八种舍入模式BigDecimal格式化、小数点转换货币格式化与百分比格式化 ...
    99+
    2023-08-18
    java BigDecimal BigDecimal的使用及坑
  • Android ProgressDialog使用总结
    ProgressDialog 继承自AlertDialog,AlertDialog继承自Dialog,实现DialogInterface接口。 ProgressDialog的创...
    99+
    2022-06-06
    progressdialog Android
  • Java ArrayList使用总结
    目录类图源码解析新增和扩容实现扩容的本质删除总结提起ArrayList,相信很多小伙伴都用过,而且还不少用。但在几年之前,我在一场面试中,面试官要求说出ArrayList的扩容机制。...
    99+
    2022-11-12
  • aws S3使用总结
      最近公司要上海外项目,要用到亚马逊。可把我折腾的够呛。好多坑。不得不说亚马逊的东西挺好最起码服务器性能比阿里云强多了。但在人性化这一点做的不如阿里。反正是各有千秋  这里说一下我的案例:要把图片cdn上的图片传到S3。这里我试了很多方法...
    99+
    2023-01-31
    aws
  • Java BigDecimal类的一般使用、BigDecimal转double方式
    目录BigDecimal类的一般使用、BigDecimal转doubleBigDecimal大据类BigDecimal类创建一个BigDecimal对象方法声明BigDecimal转...
    99+
    2022-11-13
  • java中的BigDecimal使用
    文章目录 1、什么是BigDecimal?2、为什么使用BigDecimal?3、如何使用BigDecimal?(1)BigDecimal初始化赋值(2)加减乘除运算(3)BigDecimal保留两位小数及舍入模式(4)BigDec...
    99+
    2023-08-25
    java 开发语言 算法
  • MySQL 使用规范总结
    1.必须使用InnoDB存储引擎 有更好的CPU和IO性能,更好的备份和锁表机制,提高统计和调试效率。 另外,作为一 个系统,InnoDB支持多种关键功能,其中最重要的是事务日志和行级锁。事务日志记录真正的数据库事务...
    99+
    2022-05-24
    MySQL 使用规范 MySQL 规范
  • Android ViewPager 的使用总结
    在一个窗口里面添加tab便签,完成便签切换来实现页面的切换,这样的好处是可以在同一个窗口里面有多个页面,这些页面共享同一个窗口的资源,同使用多个窗口来实现这个功能来得更加流畅!...
    99+
    2022-06-06
    viewpager Android
  • JavaScript JSON.stringify()的使用总结
    目录一、使用方法 1、基本用法 2、第二个参数--过滤器 3、第三个参数--字符串缩进 4、toJSON()方法--自定义JSON序列化 二、使用场景 1、判断数组是否包含某对象,或...
    99+
    2022-11-12
  • Android ViewModel的使用总结
    目录基本使用 MainRepositoryMainViewModelMainActivityViewModel 相关问题是高频面试题。主要源于它是 MVVM 架构模式的重要组件,并且...
    99+
    2022-11-12
  • javaspi最全使用总结
    目录前言一、JDK中SPI的使用规范案例展示SPI优点SPI缺点SPI机制在实际生产中的一个应用二、DUbbo 中SPI的使用Dubbo 的 SPI 举例三、springboot 中...
    99+
    2022-11-13
  • MongoDB使用场景总结
    很多人比较关心 MongoDB 的适用场景,也有用户在话题里分享了自己的业务场景,比如 案例1 用在应用服务器的日志记录,查找起来比文本灵活,导出也很方便。也是给应用练手,从外围系统...
    99+
    2022-11-13
  • pytest使用问题总结
    问题一、AttributeError: module 'pytest' has no attribute 'allure'解决方法:pip3 uninstall pytest-allure-adaptorpip3 install allur...
    99+
    2023-01-31
    pytest
  • adb 使用命令总结
    adb修改系统属性实现: 方法一: adb root 2.adb remount 3.adb shell 4.busybox vi system/build.prop (执行上述命令后会通过vi打...
    99+
    2023-08-31
    adb iot 经验分享 adb指令
  • vsftpd安装使用总结
    在安装盘中找到vsftpd的rpm安装文件,我的是4个disk,在disk1中.1.安装vsftpd:#rpm -ivh vsftpd*.rpm配置vsftpd:/etc/vsftpd/vsftpd.conf可以配置用户的初始路径,权限等....
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作