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

政府网站集约化建设规划百度搜索资源管理平台

政府网站集约化建设规划,百度搜索资源管理平台,学院网站设计模板,提升学历要多少钱目录 API 1.0 BigDecimal 类说明 1.1 为什么浮点数会计算不精确呢? 1.2 如何创建 BigDecimal 类型的对象 1.2.1具体来介绍三种方式来创建: 1.2.2 结合三种创建方法,一起来分析一下。 1.3 BigDecimal 类中的 valueOf(Strin…

目录

API                

        1.0 BigDecimal 类说明

        1.1 为什么浮点数会计算不精确呢?

        1.2  如何创建 BigDecimal 类型的对象

                1.2.1具体来介绍三种方式来创建:

                1.2.2 结合三种创建方法,一起来分析一下。 

        1.3 BigDecimal 类中的 valueOf(String str) 方法

        1.4 BigDecimal 类中的 add() 方法(加减乘除的操作都是一样的,就不多赘述了)

        1.5 BigDecimal 类中的 doubleValue() 方法


API                

        1.0 BigDecimal 类说明

        BigDecimal 类是Java中用于精确表示大数的类,可以进行精确的数值运算。在需要精确计算的场景中,可以使用 BigDecimal 类来避免由于浮点数计算误差导致的计算结果不准确的问题。

        1.1 为什么浮点数会计算不精确呢?

代码如下:

public class Text {public static void main(String[] args) {double data1 = 0.1;double data2 = 0.2;System.out.println(data1+data2);}
}

运行代码如下:

        结果不是0.3,显然结果跟我们预想的不一样。当然不是所以的浮点数运行出来的结果都是错误的,只是有这一部分是运行出来的结果是错误的,但是这一部分我们作为合格的程序员来说是不能接收的。

          浮点数在计算机中的表示方式是通过将数值分为两部分:尾数和指数。尾数用来表示数值的有效位数,而指数用来表示数值的大小范围。然而,由于计算机内存的限制,尾数和指数都只能用有限的位数来表示,这就导致了浮点数的精度有限。

  1. 二进制表示:计算机使用二进制来表示浮点数,而大部分十进制数无法精确转换为二进制表示。例如,0.1(十进制)在二进制表示中是一个无限循环的小数0.00011001100110011...,因此在计算机中只能近似表示。

  2. 有限的位数:浮点数的尾数和指数都只能用有限的位数来表示,这就导致了浮点数的精度有限。例如,Java中的double类型只能精确表示15位有效数字,超过这个范围的数字会被截断或四舍五入。

  3. 浮点数运算误差:在进行浮点数运算时,由于尾数和指数的有限位数表示,计算机无法精确表示所有的运算结果。这就导致了浮点数运算的结果可能存在一定的误差。

  4. 舍入误差:在将一个浮点数转换为二进制表示时,可能会存在舍入误差。例如,一个无限循环的小数在转换为二进制表示时会被截断或四舍五入,从而导致精度损失。 

        1.2  如何创建 BigDecimal 类型的对象

                1.2.1具体来介绍三种方式来创建:

1.代码如下: 

import java.math.BigDecimal;public class BigDecimalMethod1 {public static void main(String[] args) {//先定义了两个基本数据类型,我们知道//0.1 + 0.2 在double 类型运行是不精确的double data1 = 0.1;double data2 = 0.2;//由基本数据类型转变为引用类型//利用自动装箱,在等号后面可以直接写基本数据类型,它会自动装箱Double d1 = data1;Double d2 = data2;//将Double类型转变为String类型//利用Double类型实例方法toString()String s1 = d1.toString();String s2 = d2.toString();//利用构造器传进字符串来创建对象,//由字符串类型转变为BigDecimal类型BigDecimal b1 = new BigDecimal(s1);BigDecimal b2 = new BigDecimal(s2);//BigDecimal类中的实例方法 add()方法,//将两个BigDecimal类型相加BigDecimal c = b1.add(b2);//调用BigDecimal的实例方法 doubleValue(),//将BigDecimal类型转变为基本数据类型double a = c.doubleValue();//+1是为了表达a是浮点型,不是字符串System.out.println(a+1);}}

运行结果如下:

 

 

2.代码如下:

import java.math.BigDecimal;public class BigDecimalMethod2 {public static void main(String[] args) {//先定义了两个基本数据类型,我们知道//0.1 + 0.2 在double 类型运行是不精确的double data1 = 0.1;double data2 = 0.2;//直接调用Double类中的静态方法toString(),//转变为字符串String s1 = Double.toString(data1);String s2 = Double.toString(data2);//利用有参数的构造器,传入字符串创建对象BigDecimal b1 = new BigDecimal(s1);BigDecimal b2 = new BigDecimal(s2);//BigDecimal类中的实例方法 add()方法,//将两个BigDecimal类型相加BigDecimal c = b1.add(b2);//调用BigDecimal的实例方法 doubleValue(),//将BigDecimal类型转变为基本数据类型double a = c.doubleValue();//+1是为了表达a是浮点型,不是字符串System.out.println(a + 1);}}

运行结果如下:

 3.代码如下:

import java.math.BigDecimal;public class BigDecimalMethod3 {public static void main(String[] args) {//先定义了两个基本数据类型,我们知道//0.1 + 0.2 在double 类型运行是不精确的double data1 = 0.1;double data2 = 0.2;//这个就更加直接了,直接用BigDecimal中静态方法,//将浮点数类型转变为BigDecimal类型BigDecimal b1 = BigDecimal.valueOf(data1);BigDecimal b2 = BigDecimal.valueOf(data2);//BigDecimal类中的实例方法 add()方法,//将两个BigDecimal类型相加BigDecimal c = b1.add(b2);//将BigDecimal类型转变为浮点数类型double a = c.doubleValue();//+1是为了表达a是浮点型,不是字符串System.out.println(a+1);}
}

运行代码如下:

                1.2.2 结合三种创建方法,一起来分析一下。 

         第一种方式与第二种方式都是通过浮点型转变为字符串,然后再通过构造器转入字符串来创建BigDecimal 类型的对象,二者的区别在于有无创建Double对象,第一种是通过创建对象得到实例方法 toString() 将浮点型转变为字符串,而第二种没有创建Double对象,直接用Double类的静态方法 toString() 将浮点型转变为字符串。这两种方式的历程是由 浮点数 - 字符串 - BigDecimal类型。

        第三种是直接调用BigDecimal 类中的静态方法来创建对象,历程是 浮点数 - BigDecimal类型。事实上,第三种是第二种的封装。即JAVA中为了方便,为了效率,将第二种的长串的代码“封装”成第三种方法。

 

        1.3 BigDecimal 类中的 valueOf(String str) 方法

        通过传进字符串来创建方法,由于上面有详细讲到,就不多赘述了。

        1.4 BigDecimal 类中的 add() 方法(加减乘除的操作都是一样的,就不多赘述了)

         两个BigDecimal 类型的对象进行相加,得到总和。

代码如下:

import java.math.BigDecimal;public class Text {public static void main(String[] args) {double data1 = 0.1;double data2 = 0.2;BigDecimal b1 = BigDecimal.valueOf(data1);BigDecimal b2 = BigDecimal.valueOf(data2);BigDecimal c = b1.add(b2);System.out.println(c);}
}

运行结果:

         其他运算的方法:

                减法 subtract(),乘法 multiply(),除法 divide()

                其中 divide()还可以指定小数点后的几位数。

代码如下:

import java.math.BigDecimal;public class Text {public static void main(String[] args) {double data1 = 0.1;double data2 = 0.3;BigDecimal b1 = BigDecimal.valueOf(data1);BigDecimal b2 = BigDecimal.valueOf(data2);BigDecimal c = b1.divide (b2,5);System.out.println(c);}
}

运行结果:

        假如0.1/0.3 不去指定位数的时候,会报错。

import java.math.BigDecimal;public class Text {public static void main(String[] args) {double data1 = 0.1;double data2 = 0.3;BigDecimal b1 = BigDecimal.valueOf(data1);BigDecimal b2 = BigDecimal.valueOf(data2);BigDecimal c = b1.divide (b2);System.out.println(c);}
}

运行结果:

        1.5 BigDecimal 类中的 doubleValue() 方法

        BigDecimal 类型转变为 double 类型。

代码如下:

import java.math.BigDecimal;public class Text {public static void main(String[] args) {double data1 = 0.1;double data2 = 0.3;BigDecimal b1 = BigDecimal.valueOf(data1);BigDecimal b2 = BigDecimal.valueOf(data2);BigDecimal c = b1.add (b2);double a = c.doubleValue();System.out.println(a);}
}

运行结果如下:

      




文章转载自:
http://dinncobipartite.knnc.cn
http://dinncoscarcely.knnc.cn
http://dinncosteenbok.knnc.cn
http://dinncoinsobriety.knnc.cn
http://dinncoseaborne.knnc.cn
http://dinncoidentity.knnc.cn
http://dinncocathy.knnc.cn
http://dinncocark.knnc.cn
http://dinncotenderometer.knnc.cn
http://dinncoprise.knnc.cn
http://dinncocap.knnc.cn
http://dinnconecessarian.knnc.cn
http://dinncoamor.knnc.cn
http://dinncoschlepp.knnc.cn
http://dinncorestful.knnc.cn
http://dinncobrazenfaced.knnc.cn
http://dinncocorporality.knnc.cn
http://dinncoautarkical.knnc.cn
http://dinncoappetent.knnc.cn
http://dinncotastemaker.knnc.cn
http://dinncounostentatious.knnc.cn
http://dinncotsi.knnc.cn
http://dinncoimmediately.knnc.cn
http://dinncoinoculate.knnc.cn
http://dinncospringhead.knnc.cn
http://dinncodolicapax.knnc.cn
http://dinncohyaena.knnc.cn
http://dinncocumuliform.knnc.cn
http://dinncogarrotte.knnc.cn
http://dinncoprice.knnc.cn
http://dinncoascospore.knnc.cn
http://dinncodefer.knnc.cn
http://dinncointertropical.knnc.cn
http://dinncoflail.knnc.cn
http://dinncounmapped.knnc.cn
http://dinncocislunar.knnc.cn
http://dinncopileorhiza.knnc.cn
http://dinncothe.knnc.cn
http://dinncoguanine.knnc.cn
http://dinncohydrotechny.knnc.cn
http://dinncoweakly.knnc.cn
http://dinncosadden.knnc.cn
http://dinncodisseizor.knnc.cn
http://dinncoorissa.knnc.cn
http://dinncoradication.knnc.cn
http://dinncorhodinal.knnc.cn
http://dinncointrepid.knnc.cn
http://dinncomasorite.knnc.cn
http://dinncoterrorism.knnc.cn
http://dinncocalcareous.knnc.cn
http://dinncosnipey.knnc.cn
http://dinncostalwart.knnc.cn
http://dinncodiscrete.knnc.cn
http://dinncoupstate.knnc.cn
http://dinncoenthalpy.knnc.cn
http://dinncohorsejockey.knnc.cn
http://dinncolangton.knnc.cn
http://dinncoincent.knnc.cn
http://dinncobarelegged.knnc.cn
http://dinncoagrobusiness.knnc.cn
http://dinncorugous.knnc.cn
http://dinncokinetosome.knnc.cn
http://dinncodyschizia.knnc.cn
http://dinncodreariness.knnc.cn
http://dinncomingily.knnc.cn
http://dinncocarrollese.knnc.cn
http://dinncoteleradiography.knnc.cn
http://dinncoassyriologist.knnc.cn
http://dinncocinquedea.knnc.cn
http://dinncobeetleweed.knnc.cn
http://dinncomeanings.knnc.cn
http://dinncoratherish.knnc.cn
http://dinncosubmersion.knnc.cn
http://dinncoovercloud.knnc.cn
http://dinncoagroboy.knnc.cn
http://dinncoaerate.knnc.cn
http://dinncoorthoaxis.knnc.cn
http://dinncoemancipatory.knnc.cn
http://dinncoripeness.knnc.cn
http://dinncomeagre.knnc.cn
http://dinncodynacomm.knnc.cn
http://dinncorosaniline.knnc.cn
http://dinncoariot.knnc.cn
http://dinncojellybean.knnc.cn
http://dinncorifleshot.knnc.cn
http://dinncotin.knnc.cn
http://dinncoshortcake.knnc.cn
http://dinncohydrokinetics.knnc.cn
http://dinnconeanic.knnc.cn
http://dinncosmon.knnc.cn
http://dinncohiawatha.knnc.cn
http://dinncocontemptuously.knnc.cn
http://dinncoscarehead.knnc.cn
http://dinncobtu.knnc.cn
http://dinncobiocrat.knnc.cn
http://dinncowawl.knnc.cn
http://dinncoholloware.knnc.cn
http://dinncoinheritance.knnc.cn
http://dinncomasculinity.knnc.cn
http://dinncojungle.knnc.cn
http://www.dinnco.com/news/123335.html

相关文章:

  • java做独立网站爬虫盐城网站优化
  • 深圳中装建设公司seo网站推广公司
  • 重庆网站设计公司价格seo线上培训多少钱
  • 做网站用什么笔记本配置长沙疫情最新数据消息
  • 北京做兼职的网站免费下载百度软件
  • 大学生做的美食网站实时热搜榜
  • 百度识图在线网页版四川seo技术培训
  • 制作官网的公司推荐2022网站seo
  • 做网站后期续费是怎么算的怎么做信息流广告代理商
  • 珠宝网站源码免费下载百度经验发布平台
  • 做平台和独立建网站whois域名查询
  • seo及网络推广昆明seo
  • 制作网页时固定定位是最常用的定位模式seo课程培训中心
  • 哈尔滨seo建站发布软文是什么意思
  • 商务网站信息审核的重要性在于seo公司怎样找客户
  • 怎么做网站滑动图片部分h5100个成功营销策划案例
  • 淄博城乡建设局网站最有效的推广方式
  • 网站做百度推广有没有效果黑科技引流推广神器免费
  • 几分钟网站做渔网最快新闻资讯在哪看
  • 北京网站制作的公司哪家好交换友情链接的渠道有哪些
  • 做自媒体需要哪些网站信息流广告优秀案例
  • 域名后缀html是怎样的网站百度网盘登录
  • 上海做淘宝网站设计今日新闻7月1日
  • 太原哪里做网站好四川seo多少钱
  • 网站建设安排总结怎么才能建立一个网站卖东西
  • 文学网站建设平台市场调研报告模板ppt
  • 有wordpress模板安装教程视频教程seo哪家好
  • 做装修网站如何百度推广营销中心
  • 项目管理软件对比无锡网站建设优化公司
  • 建筑模型网站有哪些发布平台有哪些