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

做传销网站的云南建设厅建筑业管理网站

做传销网站的,云南建设厅建筑业管理网站,百度贴吧有没有做网站的人,怎么做网络销售的网站文章目录1、原因分析2、解决方法2.1、Java中使用 BigDecimal 类2.2、JavaScript 中解决计算精度丢失的问题3、使用建议1、原因分析 首先我们来看个反直觉的浮点数值计算 System.out.println(0.3*3);有的同学可能要问为啥不是0.9#xff1f; 首先要知道为什么会产生这个问题… 文章目录1、原因分析2、解决方法2.1、Java中使用 BigDecimal 类2.2、JavaScript 中解决计算精度丢失的问题3、使用建议1、原因分析 首先我们来看个反直觉的浮点数值计算 System.out.println(0.3*3);有的同学可能要问为啥不是0.9 首先要知道为什么会产生这个问题我们知道计算机的底层世界都是由0和1组成的而浮点数值就是采用二进制系统表示常见两种基本的浮点类型 float 和 double。 其中单精度float为32位浮点数1位符号8位指数和23位尾数小数部分。 双精度double则为64位浮点数1位符号11位指数和52位尾数小数部分。 接下来我们先看下十进制小数转二进制的例子例如将 0.3 转为二进制 0.3*20.6 //取整数0 0.6*21.2 //取整数1 0.2*20.4 //取整数0 0.4*20.8 //取整数0 0.8*21.6 //取整数1 0.6*21.2 //取整数1 0.2*20.4 //取整数0 0.4*20.8 //取整数0 0.8*21.6 //取整数1 ...... 二进制表示为010011001......可以看到计算开始循环永远无法消除小数部分根据精度不同会截取对应有效数字所以小数的二进制有时候是不能精确的就和我们十进制里不能准确表示1/30.33333333…是一个道理。 这种情况在计算时会造成了精度丢失也就是舍入误差对于金额计算会产生严重的后果。 2、解决方法 2.1、Java中使用 BigDecimal 类 我们先看下Java里面的BigDecimal类构造方法如下 可以看到 BigDecimal 有好几个构造方法BigDecimal(int)、BigDecimal(double)、BigDecimal(String)等但是这里要保证精度不丢失构造参数不要用double类型因为double类型传入的时候本身就是不完全精确的。如下 BigDecimal bd1new BigDecimal(0.3); BigDecimal bd2new BigDecimal(3); BigDecimal bd3new BigDecimal(3); System.out.println(bd1.multiply(bd2)); System.out.println(bd1.multiply(bd3));扩展在金融领域也可以使用一些第三方库例如 dependencygroupIdorg.javamoney/groupIdartifactIdmoneta/artifactIdversion1.1/version /dependency里面的Money类对金额做了显性的抽象增加了金额的单位避免了直接使用 BigDecimal 踩一些坑。 2.2、JavaScript 中解决计算精度丢失的问题 解决方法decimal.js decimal.js为 JavaScript 提供十进制类型的任意精度数值是使用的二进制来计算的所以能解决js的精度问题。 官网http://mikemcl.github.io/decimal.js GitHub地址https://github.com/MikeMcl/decimal.js 用法如下 !DOCTYPE html htmlheadmeta charsetutf-8title/title/headbodyscript srcjs/decimal.js/scriptscript typetext/javascriptvar a0.3*3;console.log(a);var b0.10.2;console.log(b);//使用decimallet a1 new Decimal(0.3).mul(new Decimal(3));console.log(a1.toNumber());let b2 new Decimal(0.1).add(new Decimal(0.2));console.log(b2.toNumber());/script/body /html结果如下 // 加法 let c new Decimal(a).add(new Decimal(b)); // 减法 let d new Decimal(a).sub(new Decimal(b)); // 乘法 let e new Decimal(a).mul(new Decimal(b)); // 除法 let f new Decimal(a).div(new Decimal(b));3、使用建议 针对浮点数值存储和计算大佬超给大家简单罗列了以下几点看法欢迎补充。 禁止通过判断两个浮点数是否相等来控制某些业务流程在比较浮点数时由于存在误差往往会出现意料之外的结果。 整型存储其最小单位的值在要求绝对精确表示的业务场景下比如金融行业的货币表示展示时可以转换成该货币的常用单位比如人民币使用分存储美元使用美分存储。 数组保存小数部分的数据在要求精确表示小数点位的业务场景下比如圆周率要求存储小数点后 1000 位数字使用单精度和双精度浮点数类型保存是难以做到的。 数据库中保存小数时推荐使用 decimal 类型。 更多技术干货请持续关注程序员大佬超。 原创不易转载请注明出处。
http://www.w-s-a.com/news/104357/

相关文章:

  • 网站建设期末试卷大气简洁网站
  • 电子商务网站建设报告范文单位做网站怎么做
  • 优质的外国网站qq小程序在哪里打开
  • 商务网站建设与推广实训报告免费素材网站无水印
  • 外贸站seoapp开发公司历程概述
  • 沈阳网站推广¥做下拉去118cr陶瓷企业 瓷砖地板公司网站建设
  • 医院网站官方微信精神文明建设我做服装设计师的 求推荐资源网站
  • 微信网站建设需要那些资料昆明cms模板建站
  • 安庆网站建设兼职中企动力是500强吗
  • 网站排名优化技巧基于网站的网络营销方法有哪些
  • 摄影素材网站做知识问答的网站
  • 中小企业网站建设济南兴田德润电话门店管理系统软件排行
  • 昆明工程建设信息网站柳州网站建设公司哪家好
  • 如何分析网站关键词北京门户网站网址
  • 做网站与做游戏那个好网站域名怎么起
  • 有没有做cad单的网站银行网站建设方案视频
  • 和各大网站做视频的工作高校网站群管理系统
  • 中国建设人才服务信息网是正规网站怎么注销自己名下的公司
  • 网站开发新型技术那些网站做任务领q币
  • 海口手机网站建设wordpress微支付宝
  • 做公司网站需要几天深圳自定义网站开发
  • 做网站学多长时间可以学会推广软件公司
  • 网络网站设计培训长沙建站模板大全
  • 站群搭建移动端处理器天梯图
  • 岳池发展建设集团有限公司门户网站湛江seo咨询
  • 手机网站工具关键词排名是什么意思
  • 游民星空是谁做的网站沈阳网站托管公司
  • 做网站搭建需要什么人vs2017移动网站开发
  • 购物网站开发需要什么技术怎么查看网站是否备案
  • 学做电商那个网站好网站建设投票主题