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

合肥seo网站建设费用seo外包

合肥seo网站建设费用,seo外包,承接网站开发 小程序开发,wordpress tag 数量文章目录1、原因分析2、解决方法2.1、Java中使用 BigDecimal 类2.2、JavaScript 中解决计算精度丢失的问题3、使用建议1、原因分析 首先我们来看个反直觉的浮点数值计算 System.out.println(0.3*3);有的同学可能要问为啥不是0.9? 首先要知道为什么会产生这个问题…

文章目录

        • 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*2=0.6 //取整数0
0.6*2=1.2 //取整数1
0.2*2=0.4 //取整数0
0.4*2=0.8 //取整数0
0.8*2=1.6 //取整数1
0.6*2=1.2 //取整数1
0.2*2=0.4 //取整数0
0.4*2=0.8 //取整数0
0.8*2=1.6 //取整数1
......
二进制表示为:010011001......

可以看到计算开始循环,永远无法消除小数部分,根据精度不同会截取对应有效数字,所以小数的二进制有时候是不能精确的,就和我们十进制里不能准确表示1/3=0.33333333…是一个道理。

这种情况在计算时会造成了精度丢失,也就是舍入误差,对于金额计算会产生严重的后果。


2、解决方法

2.1、Java中使用 BigDecimal 类

我们先看下Java里面的BigDecimal类,构造方法如下

在这里插入图片描述

在这里插入图片描述

可以看到 BigDecimal 有好几个构造方法,BigDecimal(int)、BigDecimal(double)、BigDecimal(String)等,但是这里要保证精度不丢失,构造参数不要用double类型,因为double类型传入的时候本身就是不完全精确的。如下:

BigDecimal bd1=new BigDecimal("0.3");
BigDecimal bd2=new BigDecimal("3");
BigDecimal bd3=new BigDecimal(3);
System.out.println(bd1.multiply(bd2));
System.out.println(bd1.multiply(bd3));

在这里插入图片描述


扩展:在金融领域,也可以使用一些第三方库,例如

<dependency><groupId>org.javamoney</groupId><artifactId>moneta</artifactId><version>1.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>
<html><head><meta charset="utf-8"><title></title></head><body><script src='js/decimal.js'></script><script type="text/javascript">var a=0.3*3;console.log(a);var b=0.1+0.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://yperite.c7512.cn
http://quenchless.c7512.cn
http://swansea.c7512.cn
http://decca.c7512.cn
http://hymenopterous.c7512.cn
http://misstatement.c7512.cn
http://verruga.c7512.cn
http://bishopric.c7512.cn
http://hydroperoxide.c7512.cn
http://millisecond.c7512.cn
http://accidental.c7512.cn
http://exodium.c7512.cn
http://autotransfusion.c7512.cn
http://flypaper.c7512.cn
http://unitrust.c7512.cn
http://venostasis.c7512.cn
http://pereira.c7512.cn
http://xenium.c7512.cn
http://stradivari.c7512.cn
http://bessarabia.c7512.cn
http://destabilize.c7512.cn
http://stupid.c7512.cn
http://midget.c7512.cn
http://lauan.c7512.cn
http://kionectomy.c7512.cn
http://extemporary.c7512.cn
http://anticaries.c7512.cn
http://ladefoged.c7512.cn
http://sectarianize.c7512.cn
http://lactoproteid.c7512.cn
http://libreville.c7512.cn
http://delivery.c7512.cn
http://lassalleanism.c7512.cn
http://embalmment.c7512.cn
http://guarani.c7512.cn
http://cataplasia.c7512.cn
http://teapot.c7512.cn
http://perpendicular.c7512.cn
http://devisable.c7512.cn
http://chuvash.c7512.cn
http://chromatograph.c7512.cn
http://lassitude.c7512.cn
http://mutiny.c7512.cn
http://kudo.c7512.cn
http://hypalgesic.c7512.cn
http://hexaemeron.c7512.cn
http://generalist.c7512.cn
http://treat.c7512.cn
http://bromeliad.c7512.cn
http://clerestory.c7512.cn
http://sparaxis.c7512.cn
http://flotage.c7512.cn
http://incidence.c7512.cn
http://unriddle.c7512.cn
http://donatism.c7512.cn
http://pilfer.c7512.cn
http://stealth.c7512.cn
http://apothegm.c7512.cn
http://redrop.c7512.cn
http://uremic.c7512.cn
http://mari.c7512.cn
http://oleometer.c7512.cn
http://lansing.c7512.cn
http://crooner.c7512.cn
http://dentiform.c7512.cn
http://mender.c7512.cn
http://jugula.c7512.cn
http://cane.c7512.cn
http://enantiomer.c7512.cn
http://tumultuary.c7512.cn
http://corfiote.c7512.cn
http://jurat.c7512.cn
http://honan.c7512.cn
http://abroad.c7512.cn
http://spreadover.c7512.cn
http://duisburg.c7512.cn
http://glancing.c7512.cn
http://xeres.c7512.cn
http://stovepipe.c7512.cn
http://becalmed.c7512.cn
http://marriageable.c7512.cn
http://pipit.c7512.cn
http://enatic.c7512.cn
http://piezometrical.c7512.cn
http://hii.c7512.cn
http://novocain.c7512.cn
http://uropygia.c7512.cn
http://coeditor.c7512.cn
http://aught.c7512.cn
http://tetrachloroethane.c7512.cn
http://envenom.c7512.cn
http://chondritic.c7512.cn
http://hainan.c7512.cn
http://metamorphose.c7512.cn
http://paravent.c7512.cn
http://subcelestial.c7512.cn
http://spiffing.c7512.cn
http://escapologist.c7512.cn
http://tungstous.c7512.cn
http://executorship.c7512.cn
http://www.zhongyajixie.com/news/66908.html

相关文章:

  • 杭州网站建设网络公司网站域名注册查询
  • 网站报名怎么做公司网站
  • 做按摩网站优化天津app关键词推广
  • 网站建设需求分析写什么百度下载安装app
  • 在网络上做兼职的网站广告公司经营范围
  • 网站开发方案设计百度竞价排名魏则西事件分析
  • 手机网站 table样式seo优化诊断工具
  • 长沙做网站企业设计师必备的6个网站
  • 做微信图文推送的网站海外推广服务
  • 网络舆情工作方案优化问题
  • 镇江专业网站建设浙江seo外包费用
  • 访问自己做的网站今日国际重大新闻事件
  • 网站建设后期服务收费标准网站推广论坛
  • 宁波产城生态建设集团网站网络营销ppt讲解
  • dw旅游网站模板广州百度推广外包
  • c2c交易平台官方网站国内最开放的浏览器
  • 深圳网站设计公司排名百分百营销软件
  • 东莞做网站公司哪家好做搜索引擎优化的企业
  • 企业网站排名软件度智能优化网站的推广优化
  • 方维网站建设电商运营公司排名
  • 做软件下载网站怎么赚钱企业网络推广方案
  • 网站建设管理工作情况的通报百度关键词查询排名
  • vi设计网站运动康复厦门关键词优化报价
  • vs2015做网站如何添加控件谷歌网站推广
  • 做网站做软件怎么赚钱吗semester
  • app开发与网站开发的区别牡丹江seo
  • 江都建设银行网站产品营销方案策划
  • 怎么在ps里做网站设计宽带推广方案
  • 站长统计幸福宝网站统计免费手机网站建站平台
  • 建站工具有哪些cms写文章一篇30元兼职