java中float与double的不同点整理

  • 更新时间:2020-06-13 16:18:59
  • 编辑:谭今瑶
给寻找编程代码教程的朋友们精选了相关的编程文章,网友印建安根据主题投稿了本篇教程内容,涉及到java、float、double、详解java中float与double的区别相关内容,已被920网友关注,如果对知识点想更进一步了解可以在下方电子资料中获取。

参考资料

正文内容

详解java中float与double的区别

float是单精度类型,精度是8位有效数字,取值范围是10的-38次方到10的38次方,float占用4个字节的存储空间

double是双精度类型,精度是17位有效数字,取值范围是10的-308次方到10的308次方,double占用8个字节的存储空间

当你不声明的时候,默认小数都用double来表示,所以如果要用float的话,则应该在其后加上f

例如:float a=1.3;

则会提示不能将double转化成float  这成为窄型转化

如果要用float来修饰的话,则应该使用float a=1.3f

注意float是8位有效数字,第7位数字将会产生四舍五入

所以如果一个float变量 这样定义:  float a=1.32344435;   则第7位将产生四舍五入(5及5以下的都将舍去)  

1.两个在定义时的区别

1)float型 内存分配4个字节,占32位,范围从10^-38到10^38 和 -10^38到-10^-38

例float x=123.456f,y=2e20f; 注意float型定义的数据末尾必须有"f"或"F",为了和double区别

(2)double型 内存分配8个字节,范围从10^-308到10^308 和 -10^-308到-10^-308

 例double x=1234567.98,y=8980.09d; 末尾可以有"d"也可以不写      

 2. 特别需要注意的是两个浮点数的算术运算

直接使用 +,-,*,%运算符的问题

 public class Test{
        public static void main(String args[]){
        System.out.println(0.05+0.01);
        System.out.println(1.0-0.42);
        System.out.println(4.015*100);
        System.out.println(123.3/100);
        }
    }

结果:

0.060000000000000005
0.5800000000000001
401.49999999999994
1.2329999999999999

原因:

首先得从计算机本身去讨论这个问题。我们知道,计算机并不能识别除了二进制数据以外的任何数据。无论我们使用何种编程语言,在何种编译环境下工作,都要先 把源程序翻译成二进制的机器码后才能被计算机识别。以上面提到的情况为例,我们源程序里的2.4是十进制的,计算机不能直接识别,要先编译成二进制。但问 题来了,2.4的二进制表示并非是精确的2.4,反而最为接近的二进制表示是2.3999999999999999。原因在于浮点数由两部分组成:指数和尾数,这点如果知道怎样进行浮点数的二进制与十进制转换,应该是不难理解的。如果在这个转换的过程中,浮点数参与了计算,那么转换的过程就会变得不可预 知,并且变得不可逆。我们有理由相信,就是在这个过程中,发生了精度的丢失。而至于为什么有些浮点计算会得到准确的结果,应该也是碰巧那个计算的二进制与 十进制之间能够准确转换。而当输出单个浮点型数据的时候,可以正确输出,如

double d = 2.4;
System.out.println(d);

输出的是2.4,而不是2.3999999999999999。也就是说,不进行浮点计算的时候,在十进制里浮点数能正确显示。这更印证了我以上的想法,即如果浮点数参与了计算,那么浮点数二进制与十进制间的转换过程就会变得不可预知,并且变得不可逆。

事实上,浮点数并不适合用于精确计算,而适合进行科学计算。这里有一个小知识:既然float和double型用来表示带有小数点的数,那为什么我们不称 它们为“小数”或者“实数”,要叫浮点数呢?因为这些数都以科学计数法的形式存储。当一个数如50.534,转换成科学计数法的形式为5.053e1,它 的小数点移动到了一个新的位置(即浮动了)。可见,浮点数本来就是用于科学计算的,用来进行精确计算实在太不合适了。

以上所述是小编给大家介绍的JAVA中float与double的区别详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对码农之家网站的支持!

相关教程

  • 详解Java中Integer.valueOf,parsetInt() String.valueOf的结果区别

    本文通过代码给大家讲解了JAVA中Integer.valueOf, parsetInt() String.valueOf的区别和结果,需要的朋友可以参考下

    发布时间:2019-06-07

  • jQuery中read和JavaScript中的onload函数的区别总结

    这篇文章主要介绍了jQuery中的read和JavaScript中的onload函数的区别,这两个函数在web编程中是最常用的,一定要搞清楚它们的区别,需要的朋友可以参考下

    发布时间:2019-11-12

  • Java中super和this的用法及区别

    这篇文章主要介绍了Java super和this的对比及使用的相关资料,java中this与super会经常在使用的时候混淆,需要的朋友可以参考下

    发布时间:2020-02-27

  • java==运算符和equals()方法的区别

    这篇文章主要介绍了java==运算符和equals()方法的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    发布时间:2019-06-28

  • java中Class.getMethods()和Class.getDeclaredMethods()用法区别

    这篇文章主要介绍了java中Class.getMethods()和Class.getDeclaredMethods()方法的区别 ,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

    发布时间:2019-06-10

  • 详解java基本数据类型传递与引用传递区别

    这篇文章主要介绍了java基本数据类型传递与引用传递区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    发布时间:2020-02-05

  • jvm--Java中init和clinit的区别点整理

    下面小编就为大家带来一篇详谈jvm--Java中init和clinit的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    发布时间:2020-01-21

  • 阿里巴巴最新2019Java开发手册1.5.0

    阿里巴巴最新2019Java开发手册1.5.0

    《 Java开发手册 》是阿里集团技术性精英团队的团体智慧结晶和经验交流,亲身经历了数次规模性第一线实战演练的检测及逐步完善,公布到业内后,诸多小区开发人员积极参加,相互打磨抛

    大小:1.23 MBJava开发电子书

  • Java程序员修炼之道

    Java程序员修炼之道

    伴随着关键服务平台及其生态体系的与时俱进,Java技术性一直在迅速往前发展趋势。《 Java程序员修炼之道 》包含了Java7的**特性和Java开发设计的核心技术,对当今很多开源系统技术性共存,

    大小:8.7 MBJava电子书

  • 疯狂HTML5+CSS3+JavaScript讲义

    疯狂HTML5+CSS3+JavaScript讲义

    大小:132.1 MB前端电子书

  • Java jdk14 API官方帮助文档

    Java jdk14 API官方帮助文档

    Java14 文档,记录Java14语言中的类、方法、接口信息。目前官方最新版本jdk14,这里提供Java14 API官方文档官方英文版,需要的朋友可下载试试! 3月17日JDK 14 正式发布了,此版本包含的 JEP(Java/JDK Enhancement Proposals,JDK 增强提案)比 Java 12 和 13 加起来的还要多。 总共 16 个新特性如下: 305:Pattern Matching for instanceof (Preview) 为 instanceof 运算符引入模式

    大小:7.8 MBJava

  • 黑马程序员面试题汇总(java/数据库/前端)

    黑马程序员面试题汇总(java/数据库/前端)

    此套教程整理了网上总结的面试题,有java面试题,jq面试题,jsp、servlet、ajax面试题,mysql面试题,oracle面试题,redis教案,也有最近时间总结的公司面试题,涉及的层面虽然不是很多,但是应对面试 应该还是可以的。 文件夹大概有20兆的大小,所以面试题数量也是不少的,里面也包含了一些总结和见解,比如说在集合方面的知识点有实现的各自特点,他们之间的区别,以及等等原理和实现的细节,还包含了java和前端的面试宝典,一个宝典大概有500页左

    大小:20.4 MB程序员面试

  • 大型JavaScript应用最佳实践指南

    大型JavaScript应用最佳实践指南

    大小:35 MBJavaScript电子书

  • RxJava 2.x 实战

    RxJava 2.x 实战

    《RxJava 2.x 实战》 首先讲解了函数式响应式编程的概念,包括Observables、Subject、Processor 等,以及RxJava的优点和用途。然后讲解了RxJava 中必不可少的操作符,包括创建操作符、变换操作符、过滤

    大小:149 MBRxJava电子书

  • 数据结构与抽象:Java语言描述

    数据结构与抽象:Java语言描述

    本书是一本数据结构的教材,Java语言与数据结构两条知识主线贯穿始终,这两条主线既相互独立又相互支撑。本书介绍了计算机编程中使用的数据结构和算法,包括29章,每章涉及一个ADT或其

    大小:131 MB数据结构电子书

  • Java软件结构与数据结构

    Java软件结构与数据结构

    Java软件结构与数据结构(第4版) 由著名作者JohnLewis(刘易斯)编写,本书始终以良好软件工程实践为准则,以Java为语言,介绍数据结构与算法的相关知识和具体实现,强调完美软件设计技巧的重要

    大小:129 MBJava电子书

  • Java面试突击 v3.0

    Java面试突击 v3.0

    可以把这个文档看做JavaGuide的精简版,适合面试前的突击。第3版修复错误,完善内容,增加了少部分内容。 不论是校招还是社招都避免不了各种面试、笔试,如何去准备这些东西就显得格外重要。不论是笔试还是面试都是有章可循的,这个ldquo;有章可循rdquo;说的意思只是说应对技术面试是可以提前准备。 运筹帷幄之后,决胜千里之外!

    大小:7.61 MBJava面试

用户留言