我的编程空间,编程开发者的网络收藏夹
学习永远不晚

BigDecimal使用总结

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

BigDecimal使用总结

对于超过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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

BigDecimal使用总结

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

下载Word文档

猜你喜欢

2023-01-31

sqlite3使用总结

OS X自从10.4后把SQLite这套相当出名的数据库软件,放进了作业系统工具集里。OS X包装的是第三版的SQLite,又称SQLite3。这套软件有几个特色:软件属于公共财(public domain),SQLite可说是某种「美德软
2023-01-31

Android ProgressDialog使用总结

ProgressDialog 继承自AlertDialog,AlertDialog继承自Dialog,实现DialogInterface接口。 ProgressDialog的创建方式有两种,一种是new Dialog ,一种是调用Dialo
2022-06-06

aws S3使用总结

最近公司要上海外项目,要用到亚马逊。可把我折腾的够呛。好多坑。不得不说亚马逊的东西挺好最起码服务器性能比阿里云强多了。但在人性化这一点做的不如阿里。反正是各有千秋  这里说一下我的案例:要把图片cdn上的图片传到S3。这里我试了很多方法。把
2023-01-31

java中的BigDecimal使用

文章目录 1、什么是BigDecimal?2、为什么使用BigDecimal?3、如何使用BigDecimal?(1)BigDecimal初始化赋值(2)加减乘除运算(3)BigDecimal保留两位小数及舍入模式(4)BigDec
2023-08-25

Memcached使用总结之:使用Pyt

Python连接memcached的库有很多,处于简单以及高效的原则,最终选择了pymemcache,优点完全实现了memcached text协议对于send/recv操作可以配置timeout支持"noreply"特性,该可行可以先出的
2023-01-31

java中BigDecimal的介绍及使用,BigDecimal格式化,BigDecimal常见问题

文章目录 一、BigDecimal概述二、BigDecimal常用构造方法三、BigDecimal常用方法四、BigDecimal进阶BigDecimal的八种舍入模式BigDecimal格式化、小数点转换货币格式化与百分比格式化
2023-08-18

vsftpd安装使用总结

在安装盘中找到vsftpd的rpm安装文件,我的是4个disk,在disk1中.1.安装vsftpd:#rpm -ivh vsftpd*.rpm2.配置vsftpd:/etc/vsftpd/vsftpd.conf可以配置用户的初始路径,权限
2023-06-04

Android ViewPager 的使用总结

在一个窗口里面添加tab便签,完成便签切换来实现页面的切换,这样的好处是可以在同一个窗口里面有多个页面,这些页面共享同一个窗口的资源,同使用多个窗口来实现这个功能来得更加流畅!! 主要产生的类文件有activity,n个view,adapt
2022-06-06

android Retrofit2+okHttp3使用总结

使用前准备Build.gradle文件配置dependencies配置compile 'com.squareup.retrofit2:retrofit:2.0.0'compile 'com.squareup.retrofit2:conver
2023-05-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录