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

电子商务推荐类网站建设的目的兰州网站建设推荐q479185700顶你

电子商务推荐类网站建设的目的,兰州网站建设推荐q479185700顶你,理财 网站模板 html,如何做网站旅游产品分析前言 精度丢失的问题是在其他计算机语言中也都会出现#xff0c;float和double类型的数据在执行二进制浮点运算的时候#xff0c;并没有提供完全精确的结果。产生误差不在于数的大小#xff0c;而是因为数的精度。 一、double进行运算时,经常出现精度丢失 0.10.2使用计算…前言 精度丢失的问题是在其他计算机语言中也都会出现float和double类型的数据在执行二进制浮点运算的时候并没有提供完全精确的结果。产生误差不在于数的大小而是因为数的精度。 一、double进行运算时,经常出现精度丢失 0.10.2使用计算器计算是0.3代码里却是0.30000000000000004 二、使用Java代码运行 为什么会这样呢这就是精度丢失问题造成的。 因为计算机只能识别0和1即二进制无论哪种编程语言都需要翻译成二进制才能被计算机识别。这种舍入误差的主要原因是浮点数值采用二进制系统表示 而在二进制系统中无法精确地表示分数 1/10。这就好像十进制无法精确地表示分数 1/3—样。 针对十进制1除以3是除不尽的。很好理解因为我们一直接触的就是十进制等于0.333333… 但是二进制系统中无法精确地表示分数 1/10。 我们看下面的示例代码 十进制转二进制(每次将小数部分乘2取出整数部分如果小数部分为0就可以停止这个过程)十进制0.1计算如下 public class Test5 {public static void main(String[] args) {//十进制 转二进制double a 0.1 * 2;//0.2double b 0.2 * 2;//0.4double c 0.4 * 2;//0.8double d 0.8 * 2;//1.6double e 0.6 * 2;//1.2double f 0.2 * 2;//0.4double g 0.4 * 2;//0.8double h 0.8 * 2;//1.6System.out.println(a,b,c,d);System.out.println(e,f,g,h);//我们发现上面的过程已经开始循环小数部分永远不能为0} }当某个业务场景对double数据的精度要求非常高时就必须采取某种手段来处理这个问题这也是BigDecimal为什么会被广泛应用于金额支付场景中的原因。 BigDecimal类位于java.math包下用于对超过16位有效位的数进行精确的运算。一般来说double类型的变量可以处理16位有效数但实际应用中如果超过16位就需要BigDecimal类来操作。 三、BigDecimal类常用的有参构造器 new BigDecimal(String val) /* param val String representation of {code BigDecimal}.** throws NumberFormatException if {code val} is not a valid* representation of a {code BigDecimal}.*/public BigDecimal(String val) {this(val.toCharArray(), 0, val.length());} new BigDecimal(double val)  /* param val {code double} value to be converted to* {code BigDecimal}.* throws NumberFormatException if {code val} is infinite or NaN.*/public BigDecimal(double val) {this(val,MathContext.UNLIMITED);} BigDecimal.valueOf(double val)  /* param val {code double} to convert to a {code BigDecimal}.* return a {code BigDecimal} whose value is equal to or approximately* equal to the value of {code val}.* throws NumberFormatException if {code val} is infinite or NaN.* since 1.5*/public static BigDecimal valueOf(double val) {// Reminder: a zero double returns 0.0, so we cannot fastpath// to use the constant ZERO. This might be important enough to// justify a factory approach, a cache, or a few private// constants, later.return new BigDecimal(Double.toString(val));} 四、将double转为BigDecimal的时候需要先把double转换为字符串然后再作为BigDecimal(String val)构造函数的参数这样才能避免出现精度问题。 double d1 0.1;double d2 0.2;double d3 d1 d2; //可能精度丢失问题double d4 d1 * d2; //可能精度丢失问题System.out.println(d1 d2 d3);System.out.println(d1 * d2 d4);/*** BigDecimal类位于java.math包下用于对超过16位有效位的数进行精确的运算。* 一般来说double类型的变量可以处理16位有效数* 但实际应用中如果超过16位就需要BigDecimal类来操作*/BigDecimal bigDecimal BigDecimal.valueOf(d1);//也可以使用BigDecimal p1 new BigDecimal(Double.toString(d1));//推荐使用BigDecimal p2 new BigDecimal(Double.toString(d2)); // BigDecimal add p1.add(p2);double v p1.add(p2).doubleValue();double v1 p1.multiply(p2).doubleValue();System.out.println(-------v);//0.3System.out.println(-------v1);//0.02 总结如下 Java中的double类型确实存在精度丢失的问题‌这主要源于其内部表示和运算规则。‌以下是导致double类型精度丢失的主要原因‌ 范围限制‌double类型有其能表示的最大和最小值范围。‌当数值超出这个范围时‌转换会导致精度丢失或发生溢出。‌小数位数限制‌double类型有限的位数可能无法完全表示非常长的小数部分‌导致舍入错误或精度丢失。‌十进制数的表示问题‌由于double是基于二进制的浮点数表示‌某些十进制数可能无法准确表示‌这也会导致精度丢失。‌例如‌0.1这个十进制数在二进制浮点表示中是一个无限循环小数‌转换为double类型时会有精度损失。‌运算过程中的精度丢失‌在进行算术运算时‌如果参与运算的数的精度高于double类型的精度‌则运算过程中可能会出现舍入错误‌导致最终结果的精度丢失。‌ 为了避免这些问题‌特别是在金融或需要高精度计算的领域‌建议使用BigDecimal类进行精确运算。‌BigDecimal类位于java.math包下‌用于对超过16位有效位的数进行精确的运算。‌将double转换为BigDecimal时‌需要先把double转换为字符串‌然后再作为BigDecimal构造函数的参数‌这样可以避免出现精度问题。‌此外‌连续的浮点数运算会累积精度误差‌因此在进行大量计算或对精度有严格要求的情况下‌使用BigDecimal类进行计算是更为合适的选择。
http://www.dnsts.com.cn/news/250641.html

相关文章:

  • wap网站建设学什么wordpress后台禁止更新
  • 网站营销单页怎么做网站的建设维护
  • 西宁建站赣榆网站建设xxiaoseo
  • 石家庄招聘哪个网站做的好蓝色大气网站源码
  • 包头网站设计推广一般课程网站要怎么做
  • asp.net旅游网站开发文档北京住房和建设部网站
  • ui设计培训班哪家好成都网站优化费用
  • 广告企业网站源码iis7 网站无法显示该页面
  • 家里的电脑怎样做网站赚钱网站建设公司营销推广
  • 英文商城网站国外优秀个人网站欣赏
  • 杭州设计制作网站seo优化是做什么的
  • 保定企业建网站wordpress导航模板
  • 怎么在年报网站做简易注销怎么添加wordpress模板文件
  • 点击即玩的小游戏网站seo关键词查询排名软件
  • 电子政务网站建设要求北京市城乡建设部网站首页
  • 网站开发所需开发环境湖南响应式网站推荐
  • 高淳城乡建设局网站金融棋牌网站建设
  • 建立了公司网站电影网站推广
  • 电子商务网站平台有哪些电子商务平台定制开发
  • 成都网站建设scdzks网页设计网站建设招聘
  • 门户网站系统业务流程图网站建设电脑维修数据恢复
  • 陇南市响应式网站建设网站备案 在那给网站备案
  • 中原区快速建站公司电话搜索引擎网站推广定义
  • 网站seo技巧洛阳理工学院教务管理系统
  • 网站月流量5gc mvc 网站开发进阶之路
  • 建立网站目的wordpress 后台 500
  • 东营市垦利区胜坨填建设站的网站wordpress程序员主题
  • 企业做网站流程计算机专业学校全国排名
  • 手机网站插件代码茶叶网站建设公司
  • 济南网站建设公司-远大云.鞍山抖音seo新闻