简单理解BigDecimal.valueof(Double t)与BigDecimal.valueof(String t)的区别——BigDecimal

在这里插入图片描述
上面的代码主要的区别在于

初始化BigDecimal时形参是double、String和float的区别

从上面可以看到,当double 和 float 时,实际保存的值并不是是准确的0.99,这是为什么呢

大致的原因是:

BigDecimal(double val)将会把double型二进制浮点型值精确的转换成十进制的BigDecimal。

你可能认为java中用new BigDecimal(0.1)创建的BigDecimal应该等于0.1(一个是1的无精度的值,一个是有精度的值),但实际上精确的是等于0.1000000000000000055511151231257827021181583404541015625。这是因为0.1不能被double精确的表示(下面大概描述一下原理)。因此,传入构造函数的值不是精确的等于0.1。

对与float也是同样的道理。首先此函数会自动进行精度扩展,将float类型的0.99转成double类型的,因为0.99本身就是无法用二进制表示的,也就说无论你的精度是多少位,都无法用二进制来精确表示0.99,或者你用二乘来判断(0.992=1.98 0.982=1.960.96*2=1.92 。。。永远无法得到一个整数)。这就是二进制计算机的缺点,就如同十进制也也无法表示1/3,1/6一样。
所以在0.99f转成double时,进行了精度扩展,变成了0.9900000095367432,而接着转成字符串,最后转成BigDecimal.

总结:

所以在当遇到需要涉及到精确计算的时候,如上面代码所示,要注意该构造函数是一个精确的转换,它无法得到与先调用Double.toString(double)方法将double转换成String,再使用BigDecimal(String)构造函数一样的结果。如果要达到这种结果,应该使用new BigDecimal(Stringvalue) 或 BigDecimal.valueof( double value)

扩展:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/557023.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在线计算机标准版,NCRE全国计算机等级一标准版级考试复习资料.doc

全国计算机等级一级考试复习资料内容:计算机基础知识、文字处理软件WORD复习题类型:填空题、选择题、综合题复习题数量:复习时间:12月5日—12月9日考试时间:12月9日(周三下午第三节课)参考对象:电子高专的学…

mysql 统计当天,本周,本月,上一月的数据

今天 select * from ht_invoice_information where year(create_date)year(date_sub(now(),interval 1 year)); select * from 表名 where to_days(时间字段名) to_days(now());昨天 select * from 表名 where to_days( now( ) ) - to_days( 时间字段名) < 1近期7天 sel…

下图中的蓝月亮为科学家用计算机,2018年高一地理前半期课时练习试卷带答案和解析...

目前人类可以观察到的最高级别天体系统是A. 总星系 B. 银河系 C. 太阳系 D. 地月系【答案】A【解析】本题考查天体系统的层次。距离相近的天体因相互吸引和相互绕转&#xff0c;构成不同级别的天体系统&#xff0c;天体系统的层次为&#xff1a;最高一级为总星系(即目前所知的宇…

邮政计算机网络,邮政计算机网络论文(共2018字).doc

邮政计算机网络论文(共2018字)邮政计算机网络论文(共2018字)一、邮政计算机网络基本现状分析邮政网络系统资源不足&#xff0c;数据传输技术滞后随着邮政储蓄代收付业务和电子邮政业务的快速发展&#xff0c;市场需要变化加快&#xff0c;现有网络系统资源不足&#xff0c;设备…

HashMap的put方法返回值问题

API文档中的描述&#xff1a; 先看一个例子 Map<Character, Integer> map new HashMap<Character, Integer>(); System.out.println(map.put(a, 0)); // null System.out.println(map.put(a, 1)); // 0 System.out.println(map.put(a, 2)); // 1 System.out.pri…

资金时间价值的计算机应用视频讲解,第八章资金时间价值与方案经济比选20161018讲解.ppt...

第八章资金时间价值与方案经济比选20161018讲解(二)净年值(NAV) 1、含义 净年值也称净年金(记作NAV)&#xff0c;它是把项目寿命期内的净现金流量按设定的折现率折算成与其等值的各年年末的等额净现金流量值。 2&#xff0e;计算 先求该项目的净现值&#xff0c;然后乘以资金回…

[Microsoft][ODBC SQL Server Driver][SQL Server]对象名 ‘***‘无效问题的解决方案器

[Microsoft][ODBC SQL Server Driver][SQL Server]对象名 ***无效问题的解决方案 在用Java进行SQL server数据编程时出现数据库连接成功后对表进行操作时报错“表名无效”。在网上搜了相关问题后均未解决&#xff0c;最后通过在表名前加数据库名的方式得以解决&#xff0c;记录…

Java中将Map转换为JSON

一个注意的地方&#xff1a;要选对jar包 Map map new HashMap();map.put("success", "true");map.put("photoList", photoList);map.put("currentUser", "zhang");//net.sf.json.JSONObject 将Map转换为JSON方法JSONObject…

掌上通计算机一级考试在线安装,计算机一级掌上通

计算机一级掌上通app是一款计算机等级考试学习的软件&#xff0c;让你在线学习计算机的操作知识&#xff0c;便于通过等级考试&#xff0c;快速准确&#xff1b;软件提供海量选择题的题库&#xff0c;随时随地做题&#xff0c;简单又方便&#xff0c;还有计算机基本操作讲解&am…

java获取时间,本周,本月,本季度的起始

package com.yong.util; import java.util.Calendar; import java.util.Date;public class TestDate {public static void main(String[] args) {System.out.println("当前时间&#xff1a;" new Date().toLocaleString());System.out.println("当天0点时间&…

东莞理工学院计算机ccf,中国计算机学会东莞分部成立

为更全面和更好地服务东莞计算机领域专业人士的学术和职业发展&#xff0c;在中国计算机学会(CCF)总部和广州、深圳分部的指导和协助下&#xff0c;由东莞理工学院和中美融易孵化器牵头&#xff0c;联合东莞市各大高校、学会、企业&#xff0c;共同发起成立中国计算机学会东莞分…

mybatis获取表名——mybatis动态调用表名和字段名#{},${}

一直在使用Mybatis这个ORM框架&#xff0c;都是使用mybatis里的一些常用功能。今天在项目开发中有个业务是需要限制各个用户对某些表里的字段查询以及某些字段是否显示&#xff0c;如某张表的某些字段不让用户查询到。这种情况下&#xff0c;就需要构建sql来动态传入表名、字段…

浙大计算机学院辅导员,浙大博士应聘辅导员被指丢脸 月薪仅1000元

浙江在线05月02日讯 浙江大学动物营养与饲料科学专业博士生冯一秦这两天正在准备博士论文答辩&#xff0c;他已经找好了工作单位——在工商大学当大学生辅导员&#xff0c;一度成为浙大BBS头条新闻——高职低聘&#xff0c;很丢脸吗&#xff1f;网友跟帖&#xff1a;这样的博士…

html5 中 video 标签,H5页面中 video 标签的坑

兼容性差因为是原生组件层级最高iOS系统 和 安卓系统展示方式不一样整理了一些有效的方法关于 标签的 css 样式//全屏按钮video::-webkit-media-controls-fullscreen-button {display: none;}//播放按钮video::-webkit-media-controls-play-button {display: none;}//进度条vid…

男孩读计算机好还是铁路学校好,中专学计算机好还是铁路好?

随着石家庄通用交通学校春季招生火热进行中&#xff0c;有很多同学会在微信上咨询武老师一些学校的问题&#xff0c;比如说选什么专业好&#xff0c;将来哪个专业比较好找工作等等&#xff0c;最近在咨询中&#xff0c;有个同学想学铁路专业也想学计算机专业&#xff0c;就很纠…

谈谈对 Spring 的理解

认识 Spring 框架 Spring 框架是 Java 应用最广的框架&#xff0c;它的成功来源于理念&#xff0c;而不是技术本身&#xff0c;它的理念包括 IoC (Inversion of Control&#xff0c;控制反转) 和 AOP(Aspect Oriented Programming&#xff0c;面向切面编程)。 什么是 Spring&…

计算机与体育教育的关系,体育教学论文:健康教育与体育教育存在的问题研究...

摘要&#xff1a;确立“健康第一”的指导思想,使体育与健康教育相结合,使教育过程与教育目标、手段相统一,是当今世界经济发达国家学校体育工作的共同特点,也是学校体育学科发展的必然。该文通过《体育与健康》课改过程中尚存问题的研究,提出相应的对策,以实现体育教育向素质教…

Spring中@Autowired和@Resource的区别

一、定义 Autowired 对类成员变量、方法及构造函数进行标注&#xff0c;完成自动装配的工作。 Resource 在语义上被定义为通过其唯一的名称来标识特定的目标组件&#xff0c;其中声明的类型与匹配过程无关。 如果没有明确指定名称&#xff0c;则默认名称是从字段名称或设置…

全国计算机考试真考题库4,全国计算机等级考试无纸化真考题库试卷二级C--(4)资料.docx...

精品文档精品文档PAGEPAGE #欢迎下载全国计算机等级考试无纸化真考题库试卷(4)二级 C(考试时间120分钟&#xff0c;满分100分)一、选择题(每小题1分&#xff0c;共40分)(1)下列数据结构中&#xff0c;属于非线性结构的是()。A)循环队列B)带链队列C)二叉树D)带链栈⑵下列数据结构…

Java面试题大全

一、Java 基础 1. JDK 和 JRE 有什么区别&#xff1f; JDK&#xff1a;Java Development Kit 的简称&#xff0c;java 开发工具包&#xff0c;提供了 java 的开发环境和运行环境。JRE&#xff1a;Java Runtime Environment 的简称&#xff0c;java 运行环境&#xff0c;为 ja…