当前位置: 首页 > news >正文

武进网站建设机构在那个网站做直播好赚钱吗

武进网站建设机构,在那个网站做直播好赚钱吗,直播软件排行榜前十名,玩车 wordpress△一个对Coding有着独特追求的人△作者 l Hollis来源 l Hollis#xff08;ID#xff1a;hollischuang#xff09;BigDecimal#xff0c;相信对于很多人来说都不陌生#xff0c;很多人都知道他的用法#xff0c;这是一种java.math包中提供的一种可以用来进行精确运算的类型… △一个对Coding有着独特追求的人△作者 l Hollis来源 l HollisIDhollischuangBigDecimal相信对于很多人来说都不陌生很多人都知道他的用法这是一种java.math包中提供的一种可以用来进行精确运算的类型。很多人都知道在进行金额表示、金额计算等场景不能使用double、float等类型而是要使用对精度支持的更好的BigDecimal。所以很多支付、电商、金融等业务中BigDecimal的使用非常频繁。而且不得不说这是一个非常好用的类其内部自带了很多方法如加减乘除等运算方法都是可以直接调用的。除了需要用BigDecimal表示数字和进行数字运算以外代码中还经常需要对于数字进行相等判断。关于BigDecimal等值判断的这个知识点在最新版的《阿里巴巴Java开发手册》中也有说明那么为什么会有这样的要求呢背后的思考是什么呢其实我在之前的CodeReview中看到过以下这样的低级错误if(bigDecimal  bigDecimal1){// 两个数相等} 这种错误相信聪明的读者一眼就可以看出问题因为BigDecimal是对象所以不能用来判断两个数字的值是否相等。以上这种问题在有一定的经验之后还是可以避免的但是聪明的读者看一下以下这行代码你觉得他有问题吗if(bigDecimal.equals(bigDecimal1)){// 两个数相等} 可以明确的告诉大家以上这种写法可能得到的结果和你预想的不一样先来做个实验运行以下代码BigDecimal bigDecimal  new BigDecimal(1);BigDecimal bigDecimal1  new BigDecimal(1);System.out.println(bigDecimal.equals(bigDecimal1));BigDecimal bigDecimal2  new BigDecimal(1);BigDecimal bigDecimal3  new BigDecimal(1.0);System.out.println(bigDecimal2.equals(bigDecimal3));BigDecimal bigDecimal4  new BigDecimal(1);BigDecimal bigDecimal5  new BigDecimal(1.0);System.out.println(bigDecimal4.equals(bigDecimal5)); 以上代码输出结果为truetruefalse BigDecimal的equals原理通过以上代码示例我们发现在使用BigDecimal的equals方法对1和1.0进行比较的时候有的时候是true当使用int、double定义BigDecimal时有的时候是false当使用String定义BigDecimal时。那么为什么会出现这样的情况呢我们先来看下BigDecimal的equals方法。在BigDecimal的JavaDoc中其实已经解释了其中原因Compares this  BigDecimal with the specified Object for equality.  Unlike compareTo, this method considers two BigDecimal objects equal only if they are equal in value and scale (thus 2.0 is not equal to 2.00 when compared by  this method) 大概意思就是equals方法和compareTo并不一样equals方法会比较两部分内容分别是值value和精度scale对应的代码如下所以我们以上代码定义出来的两个BigDecimal对象bigDecimal4和bigDecimal5的精度是不一样的所以使用equals比较的结果就是false了。尝试着对代码进行debug在debug的过程中我们也可以看到bigDecimal4的精度是0而bigDecimal5的精度是1。到这里我们大概解释清楚了之所以equals比较bigDecimal4和bigDecimal5的结果是false是因为精度不同。那么为什么精度不同呢为什么bigDecimal2和bigDecimal3的精度是一样的当使用int、double定义BigDecimal时而bigDecimal4和bigDecimal5却不一样当使用String定义BigDecimal时呢为什么精度不同这个就涉及到BigDecimal的精度问题了这个问题其实是比较复杂的由于不是本文的重点这里面就简单介绍一下吧。大家感兴趣的话后面单独讲。首先BigDecimal一共有以下4个构造方法BigDecimal(int)BigDecimal(double) BigDecimal(long) BigDecimal(String) 以上四个方法创建出来的的BigDecimal的精度是不同的。BigDecimal(long) 和BigDecimal(int)首先最简单的就是BigDecimal(long) 和BigDecimal(int)因为是整数所以精度就是0 public BigDecimal(int val) {this.intCompact  val;this.scale  0;this.intVal  null;}public BigDecimal(long val) {this.intCompact  val;this.intVal  (val  INFLATED) ? INFLATED_BIGINT : null;this.scale  0;} BigDecimal(double)而对于BigDecimal(double) 当我们使用new BigDecimal(0.1)创建一个BigDecimal 的时候其实创建出来的值并不是正好等于0.1的而是0.1000000000000000055511151231257827021181583404541015625 。这是因为doule自身表示的只是一个近似值。那么无论我们使用new BigDecimal(0.1)还是new BigDecimal(0.10)定义他的近似值都是0.1000000000000000055511151231257827021181583404541015625这个那么他的精度就是这个数字的位数即55。其他的浮点数也同样的道理。对于new BigDecimal(1.0)这样的形式来说因为他本质上也是个整数所以他创建出来的数字的精度就是0。所以因为BigDecimal(1.0)和BigDecimal(1.00)的精度是一样的所以在使用equals方法比较的时候得到的结果就是true。BigDecimal(string)而对于BigDecimal(double) 当我们使用new BigDecimal(0.1)创建一个BigDecimal 的时候其实创建出来的值正好就是等于0.1的。那么他的精度也就是1。如果使用new BigDecimal(0.10000)那么创建出来的数就是0.10000精度也就是5。所以因为BigDecimal(1.0)和BigDecimal(1.00)的精度不一样所以在使用equals方法比较的时候得到的结果就是false。如何比较BigDecimal前面我们解释了BigDecimal的equals方法其实不只是会比较数字的值还会对其精度进行比较。所以当我们使用equals方法判断判断两个数是否相等的时候是极其严格的。那么如果我们只想判断两个BigDecimal的值是否相等那么该如何判断呢BigDecimal中提供了compareTo方法这个方法就可以只比较两个数字的值如果两个数相等则返回0。    BigDecimal bigDecimal4  new BigDecimal(1);BigDecimal bigDecimal5  new BigDecimal(1.0000);System.out.println(bigDecimal4.compareTo(bigDecimal5)); 以上代码输出结果0 其源码如下总结BigDecimal是一个非常好用的表示高精度数字的类其中提供了很多丰富的方法。但是他的equals方法使用的时候需要谨慎因为他在比较的时候不仅比较两个数字的值还会比较他们的精度只要这两个因素有一个是不相等的那么结果也是false、如果读者想要对两个BigDecimal的数值进行比较的话可以使用compareTo方法。 往期推荐 阿里《Java开发手册》最新嵩山版发布多图证明Java到底是值传递还是引用传递URL 去重的 6 种方案(附详细代码)关注下方二维码收获更多干货
http://www.pierceye.com/news/532790/

相关文章:

  • 斐讯k3做网站工商注册名称核准查询
  • 兼职网站编辑深圳网站做的好的公司哪家好
  • 网站响应速度优化wordpress外贸主题购买
  • 没有后台的网站怎么做排名网页设计学校
  • 江苏网站建设哪家快点外贸商城网站系统
  • 菠菜网站做首存wordpress 警告
  • 无锡好的网站建设公司网站公司做的网站被攻击
  • 建设银行官方网站下载安装淘宝官网首页登录入口电脑
  • 玩具外贸网站扬中论坛全部帖子
  • 网站搭建规划建设网站方案ppt
  • 手机上哪个网站免费wordpress空间
  • 网站改版上线西安网站群搭建
  • 百度竞价培训青岛网站建设和优化
  • 网站建设 收费明细wordpress 动漫 主题下载
  • 物流网站怎么做推广wordpress插件ERP
  • 网站开发市场价手机改ip地址软件免费
  • 上海网站建设zj kt网站开发网络公司
  • 郑州平台网站建设福田欧曼图片
  • 企业网站策划应该怎么做杭州萧山网站建设
  • 南昌网站建设如何网站建设综合训练的实验目的
  • 连锁酒店网站建设软件开发分为哪几个步骤
  • 网站订单模板怎么可以自己做网站被百度收到
  • 网上做物理题赚钱的网站肥城住房和城乡建设局网站
  • 傻瓜式网站源码比较好的网站建设品牌升级
  • 买东西的网站德阳机械加工网
  • 企业网站建设的基本标准是广告公司运作模式
  • 做推广网站的文章电动汽车排名前十名
  • 宜州网站建设服务网页生成长图 iphone
  • 网站关键词seo费用广告设计教学大纲
  • 网站开发视频 百度云自己做网站卖东西