Java中的BigDecimal类使用 三种类型的构造方法
来源:CSDN 时间:2022-12-20 09:11:44
(资料图片)
1、BigDecimal类概述
Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BinInteger 类和 java.math.BigDecimal 类,用于高精度计算.其中 BigInteger 类是针对大整数的处理类,而 BigDecimal 类则是针对大小数的处理类.BigDecimal 类的实现用到了 BigInteger类,不同的是 BigDecimal 加入了小数的概念.float和Double只能用来做科学计算或者是工程计算;在商业计算中,对数字精度要求较高,必须使用 BigInteger 类和 BigDecimal 类,它支持任何精度的定点数,可以用它来精确计算货币值。
由于在运算的时候,float类型和double很容易丢失精度,所以一般不用来做计算货币。
2、BigDecimal构造方法
有三种类型的构造方法:
1、方法一
BigDecimal BigDecimal(double d); //不允许使用2、方法二
BigDecimal BigDecimal(String s); //常用,推荐使用3、方法三
static BigDecimal valueOf(double d); //常用,推荐使用1.不推荐使用BigDecimal(double val)构造器,因为使用该构造器时有一定的不可预知性,当程序使用new BigDecimal(0.1)创建一个BigDecimal对象时,它的值并不是0.1,实际上是一个近似0.1的数。 2.建议优先使用基于String的构造器,使用BigDecimal(String val)构造器时可以预知的,写入new BigDecimal("0.1")将创建一个恰好等于0.1的BigDecimal。 3.如果必须使用double浮点数作为BigDecimal构造器的参数时,不要使用double作为参数,而应该通过BigDecimal.valueOf(double value)静态方法来创建对象。
3、BigDecimal类成员方法
public BigDecimal add(BigDecimal augend):加 public BigDecimal subtract(BigDecimal subtrahend):减 public BigDecimal multiply(BigDecimal multiplicand):乘 public BigDecimal divide(BigDecimal divisor):除 public BigDecimal divide(BigDecimal divisor,int scale, int roundingMode):商,几位小数,舍取模式
4、BigDecimal示列
import java.math.BigDecimal;/** * @version: V1.0 * @author: fendo * @className: BigDecimalTest * @packageName: com.xxx * @description: BigDecimal测试类 * @data: 2018-04-17 14:23 **/public class ArithTest { // 除法运算默认精度 private static final int DEF_DIV_SCALE = 10; private ArithTest() { } /** * 精确加法 */ public static double add(double value1, double value2) { BigDecimal b1 = BigDecimal.valueOf(value1); BigDecimal b2 = BigDecimal.valueOf(value2); return b1.add(b2).doubleValue(); } /** * 精确减法 */ public static double sub(double value1, double value2) { BigDecimal b1 = BigDecimal.valueOf(value1); BigDecimal b2 = BigDecimal.valueOf(value2); return b1.subtract(b2).doubleValue(); } /** * 精确乘法 */ public static double mul(double value1, double value2) { BigDecimal b1 = BigDecimal.valueOf(value1); BigDecimal b2 = BigDecimal.valueOf(value2); return b1.multiply(b2).doubleValue(); } /** * 精确除法 使用默认精度 */ public static double div(double value1, double value2) throws IllegalAccessException { return div(value1, value2, DEF_DIV_SCALE); } /** * 精确除法 * @param scale 精度 */ public static double div(double value1, double value2, int scale) throws IllegalAccessException { if(scale < 0) { throw new IllegalAccessException("精确度不能小于0"); } BigDecimal b1 = BigDecimal.valueOf(value1); BigDecimal b2 = BigDecimal.valueOf(value2); // return b1.divide(b2, scale).doubleValue(); return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } /** * 四舍五入 * @param scale 小数点后保留几位 */ public static double round(double v, int scale) throws IllegalAccessException { return div(v, 1, scale); } /** * 比较大小 */ public static boolean equalTo(BigDecimal b1, BigDecimal b2) { if(b1 == null || b2 == null) { return false; } return 0 == b1.compareTo(b2); } public static void main(String[] args) throws IllegalAccessException { double value1=1.2345678912311; double value2=9.1234567890123; BigDecimal value3=new BigDecimal(Double.toString(value1)); BigDecimal value4=new BigDecimal(Double.toString(value2)); System.out.println("精确加法================="+ArithTest.add(value1, value2)); System.out.println("精确减法================="+ArithTest.sub(value1, value2)); System.out.println("精确乘法================="+ArithTest.mul(value1, value2)); System.out.println("精确除法 使用默认精度 ================="+ArithTest.div(value1, value2)); System.out.println("精确除法 设置精度================="+ArithTest.div(value1, value2,20)); System.out.println("四舍五入 小数点后保留几位 ================="+ArithTest.round(value1, 10)); System.out.println("比较大小 ================="+ArithTest.equalTo(value3, value4)); }}
标签:
相关推荐:
最新新闻:
- DHCP协议简介 DHCP三种分配方式
- 全球实时:setTimeout是什么意思?彻底理解setTimeout
- Java中的BigDecimal类使用 三种类型的构造方法
- Scope参数错误或没有Scope权限怎么办?解决办法
- security是什么意思?security详解-即时看
- 【环球聚看点】蕾哈娜抖音首次晒娃:这表情 确定是亲生的!
- 什么是域?AD域的详细介绍
- 手游《古惑狼:全速冲锋》将停服 发售不到2年|焦点速递
- 读书郎学生电脑如何下载?读书郎电脑下载步骤
- Ubuntu中snap是什么意思?介绍一些常用命令|焦点播报
- LOL各英雄的原型来源你了解几个? LOL背后的小故事
- 如何在excel中画斜线?在excel中画斜线的方法|天天新消息
- 激光焊接机价格怎么样?激光焊接机价格参考_世界滚动
- 全球滚动:电烤箱烤羊肉串怎么做?电烤箱烤羊肉串做法步骤
- sd卡数据恢复软件有哪些?sd卡数据恢复的软件
- 手机多媒体没声音是怎么回事?手机多媒体没声音怎么修?
- ISO9000和ISO9001有什么特点?ISO9000和ISO9001作用详解_环球头条
- 抖音可以查访客记录吗?抖音访客记录怎么看?
- 当前焦点!DOTA2前EG队长Fly求婚成功 晒出甜蜜合影
- 小键盘指法怎么操作?小键盘指法练习技巧|当前快播
- Windows 11壁纸有新玩法 用户可以自己画 焦点简讯
- 手机闪存卡哪款好?经典手机闪存卡有哪些推荐?|信息
- 电阻式触摸屏好用吗?电阻式触摸屏工作原理|全球信息
- 人生中的第一个Java程序:HelloWorld:天天百事通
- 爱宁牌电饼铛怎样?爱宁牌电饼铛的优势介绍
- vice versa是什么意思?vice versa通常翻译 世界快播
- 《冷漠 鸣神学园的七大不可思议》大型DLC12月23日上线
- 视讯!文件删除了怎么恢复?文件删除了三种恢复方法
- 联想服务器linux系统raid驱动 IntelRAID 6.12版RAID卡驱动官方正式版下载
- 全球快看点丨这款国产操作系统界面竟与Windows 11如出一辙
- 【环球快播报】除了币安,币圈最危险的大麻烦:稳定币USDT
- 浏览器市场占有率排行表 2020年8月国内浏览器排行
- GSC将推出上坂堇可动手办:声优首次figma化!
- 笔记本电脑品牌有哪些推荐?五款热门品牌推荐-焦点滚动
- 英特尔发力 游戏本将迎来24核心处理器-即时看
- 焦点速看:有哪些好看的电影推荐?吐血推荐250部必看电影
- 看热讯:华为荣耀4C详细评测 再次刷新安卓手机性价比
- 节能灯具有哪些品牌?节能灯具品牌介绍
- 苹果手机助手哪个好?推荐几款好用的苹果手机助手:世界今热点
- 磊科升级版NW360怎么样?磊科升级版NW360详细介绍-动态焦点
- RX 7900系列开卖被秒光 诸多用户回归N卡阵营:环球速看料
- 如何打开关闭Excel2007/2010兼容性检查器?关闭技巧:全球要闻
- 炉石传说美服天梯第一的冠军贼卡组分享 详细介绍 当前热点
- hr是什么意思?管理的五大原则|全球聚看点
- 我们为什么要上学?奥巴马开学演讲稿:全球今热点
- 全球微资讯!咸鱼Maya笔记 Maya界面是怎么组成的?
- E. Border是什么?拓展欧几里得+mod分析
- 安卓怎么开启启动模式?Android四种启动模式_环球速读
- 520还在画玫瑰?教你用MATLAB画个玫瑰花球|实时焦点
- 我的世界android制作教程 我的世界怎么去月球?
财经
热门排行
- 电阻式触摸屏好用吗?电阻式触摸屏工作原理|全球信息
- Cubase延音踏板怎么设置?Cubase延音踏板设置延音效果 最新消息
- 人生中的第一个Java程序:HelloWorld:天天百事通
- 焦点速看:有哪些好看的电影推荐?吐血推荐250部必看电影
- 看热讯:华为荣耀4C详细评测 再次刷新安卓手机性价比
- 世界热点!计算机拨号连接无法建立连接怎么办?电信拨号上网连接不上的解决方法
- E. Border是什么?拓展欧几里得+mod分析
- 520还在画玫瑰?教你用MATLAB画个玫瑰花球|实时焦点
- 热门看点:币安将以10.22亿美元的价格收购加密货币借贷平台Voyager的资产
- IPO大潮退去,美股繁盛时期上市的大批股票现在面临退市风险
新闻放送
- 卡梅隆封神往事:一个天才疯子和《阿凡达》的20年_世界实时
- 神谷英树将《猎天使魔女:起源》比作童心绘本-全球播报
- Steam喜加一:圣诞主题像素排球游戏《Jollyball》
- 《碟中谍7》官方幕后花絮:阿汤哥太拼 3000米飞车跳崖|全球快播报
- 联想USB 3.0扩展坞29元限时秒:4个USB接口 支持Type-C供电-世界热点
- 苹果新一代显示器来了:屏幕升级为mini LED
- NVIDIA CES新品发布会官宣:RTX 4070 Ti、RTX 40笔记本显卡要来了:热门看点
- 性价比还得看AMD 6核锐龙+显卡+主板套装1239元:当前要闻
- 环球快消息!ZOL科技早餐:骁龙8 Gen2新机2999元,魅族19外观将揭晓
- 《水浒风云传》确定12月22日登陆Xbox和Switch 天天观速讯
- 【天天新视野】《原神》剧情视频「秋津羽戏」讲述人与妖的友情
- 高手用虚幻5做出《刺客信条》粉丝最期待的游戏功能
- 96核心192线程!AMD Zen4线程撕裂者7000将至 当前速递
- 冬日特别福利!即刻上手领取你的穿越火线限定礼包吧:今日热讯
- 环球时讯:CES 2023 多家电脑厂商预热新款大屏游戏本
- 三强联手:Steam与苹果正式加盟特斯拉_天天短讯
- 马斯克狂卖特斯拉股票:三天套现250+亿人民币
- 姆巴佩决赛失利首度发声:我们会回来的! 每日观点
- 【世界独家】艰难的阿根廷,比梅西更需要这座大力神杯
- 美国国防部:没有任何证据显示UFO与外星人有关 今日讯
- Epic喜加一:《小马格斗》免费领取
- 【天天热闻】《装甲核心6:境界天火》不会包含战役合作模式
- 《模拟人生4》玩家合计游戏时长达14亿小时_环球讯息
- ARPG《致命躯壳:完整版》推出Switch版|当前视讯
- Epic Games支付5.2亿美元以解决侵犯儿童隐私问题