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

淄博学校网站建设定制wordpress 去优酷广告

淄博学校网站建设定制,wordpress 去优酷广告,网站开发设计jw100,seo优化方法有哪些目录一. BigDecimal的初始化精度丢失问题二. BigDecimal在进行除法运算时需设置精度,否则对于除不尽的情况会抛出异常三. 不要使用BigDecimal的equals方法比较大小, 否则可能会因为精度问题导致比较结果和预期的不一致在java.math包中提供了对大数字的操作类#xff0c;用于进… 目录一. BigDecimal的初始化精度丢失问题二. BigDecimal在进行除法运算时需设置精度,否则对于除不尽的情况会抛出异常三. 不要使用BigDecimal的equals方法比较大小, 否则可能会因为精度问题导致比较结果和预期的不一致在java.math包中提供了对大数字的操作类用于进行高精确计算如BigIntegerBigDecimal类。而平常我们开发中使用最多的float和double只能适用于一般的科学和工程计算如果要在比较精确的计算方面如货币那么使用float和double会相应的丢失精度因此用于精密计算大数字的类BigDecimal就必不可少了。所以BigDecimal适合商业计算场景用来对超过16位有效位的数进行精确的运算。但是BigDecimal的使用并不像float和double那样使用不当造成的后果更严重下面就来看下我们项目中踩过BigDecimal的坑: 一. BigDecimal的初始化精度丢失问题 先来看下面代码的运行结果: BigDecimal bd1 new BigDecimal(0.1); System.out.println(bd1bd1); BigDecimal bd2 new BigDecimal(0.1); System.out.println(bd2bd2); BigDecimal bd3 BigDecimal.valueOf(0.1); System.out.println(bd3bd3);输出结果 bd10.1000000000000000055511151231257827021181583404541015625 bd20.1 bd30.1如果是float或double类型转Bigdecimal不要使用new BigDecimal()转, 使用valueOf()方法 或 new BigDecimal(“”)转成string否则有可能出现精度问题。 《Effective Java》这本书里说过 如果需要精确的答案请避免使用float和double 因为float和double执行的是二进制浮点运算二进制有些情况下不能准确的表示一个小数就像十进制不能准确的表示1/3(1/30.3333…)也就是说二进制表示小数的时候只能够表示能够用1/(2^n)的和的任意组合例如 0.5能够表示因为它可以表示成为1/20.75也能够表示因为它可以表示成为1/21/(2^2)0.875也能够表示因为它可以表示成为1/21/(22)1/(23)但是0.1不能够精确表示因为它不能够表示成为1/(2^n)的和的形式 System.out.println(0.5*3); System.out.println(0.1*3);大家可以本地执行下这两行代码看下输出结果就知道为什么二进制不能表示0.1却可以表示0.5了。所以其实不是BigDecimal的问题BigDecimal就是为了满足精确运算存在的问题出在0.1它本身就一个不准确的值这其实跟BigDecimal无关但在使用的时候需要注意用法。 二. BigDecimal在进行除法运算时需设置精度,否则对于除不尽的情况会抛出异常 继续看下面的代码执行结果 BigDecimal bd4 new BigDecimal(10); BigDecimal bd5 new BigDecimal(3); System.out.println(bd4.divide(bd5));输出结果 Exception in thread main java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. at java.math.BigDecimal.divide(BigDecimal.java:1690) at BigDecimalTest.main(BigDecimalTest.java:38)应该向下面这样设置小数点后的位数,以及超出后是四舍五入和向上/向下取整或者直接舍弃 System.out.println(bd4.divide(bd5,2,BigDecimal.ROUND_DOWN));第二个参数表示小数位数第三个参数表示超出的位数直接舍弃当然也可以设置四舍五入向上取整等 三. 不要使用BigDecimal的equals方法比较大小, 否则可能会因为精度问题导致比较结果和预期的不一致 BigDecimal bd1 new BigDecimal(0); BigDecimal bd2 new BigDecimal(0.0); System.out.println(bd1.equals(bd2)); System.out.println(bd1.compareTo(bd2) 0)输出结果 equals:false compareTo:true如果你无法确定你的BigDecimal值有小数情况最好用compareTo
http://www.eeditor.cn/news/121586/

相关文章:

  • 网站制作基本步骤网站建设 有限公司
  • 途牛网站建设方案wordpress定义
  • 广州市网站集约化建设大学专业建设的内容
  • 制作一个网站大概要多少钱建筑智能化工程技术
  • 网站侧面菜单展开怎么做房地产网站做编辑刚刚入行
  • 现在网站做多宽的百度推广登录首页
  • 网站空间要多大国内做网站需要做icp备案吗
  • 哪些网站可以做招生信息网站 注册模块怎么做
  • 镇江网站设计建设软件开发工具自考
  • 网站的规划 建设与分析论文网站建设品牌
  • 电子商务网站建设心得河南搜索引擎推广多少钱
  • 泰安网络推广联系昔年下拉昆明优化公司
  • 网站前端制作费用北京网站托管
  • 郑州网站优化软件推广赚钱网
  • html5网站建设源码单页面销售信网站赚钱系统
  • 网站备案得多长时间河北建设工程网站
  • 网站做直播需要资质吗高端品牌网站建设有哪些注意事项
  • 专用主机方式建设网站如何创立自己的网址
  • 酒泉市城乡建设局网站网站欢迎页设计
  • 布吉医院网站建设做网站书
  • 商城网站建设的注意事项网页首页设计模板免费
  • 网站建设 培训离石市网站建设公司
  • 网站上的销售怎么做网站开发说明
  • 平台和自建网站服务提供者网上购物哪个商城好
  • qq官方网站搜索引擎优化工具
  • 网站技术说明书模板摄影设计师招聘
  • 昆明建设银行纪念币预约网站有关于网站建设的参考文献
  • 嘉兴中元建设网站怎样制作免费网页
  • 做app 的模板下载网站有哪些樱花动漫imomoe官网入口
  • 做网站什么语言最好创新logo标志设计