原标题:jvm规范之浮点数 - 你知道吗,有个数字它和自身不相等

你知道吗,有个数字它和自身不相等,你知道吗,有两个数字他们是相等的,但是1.0除以他们得到的结果却是大相径庭。本文将为你揭开这神秘的面纱,并自此开启 java jvm 之旅。关注我,我接下来将持续更新 java jvm 知识 、数据结构与算法,你若关注,我必不负所望!

今天,我们说 jvm 里浮点数的表示,已经整理如下:

浮点数的表示,目前几乎都是用 IEEE754 标准,它包括了:正负数,正负0,正负无穷大,以及 NaN(Not a number),其中,NaN = 0.0f / 0.0f,NaN 是无序的,而且 NaN != NaN,本身不相等,这是唯一一例,也无法用标准形式表示。

正负 0 虽然是相等的,但是有区别,1.0 / 0.0 等于正无穷大,1.0/-0.0 等于 负无穷大。此外,正负 0 就没区别了。

现在,我们正式走进浮点数的世界,java jvm 里不只有 单精度浮点数集合,还有单精度扩展指数集合,不只有双精度浮点数集合,还有双精度扩展指数集合。但是,单、双精度扩展指数集合是可选的,而单双精度浮点数集合是必须要实现的,扩展指数集合可以代替浮点数集合。

IEEE754 标准里,一个浮点数表示为:s × m × 2^(e-N+l) 来表示,其中,s 为正负1,表示数字的符号,

m 是一个小于 2^N 的正整数, e 是一个介于 Emin=-(2^(k-1) - 2) 和 Emax=2^(K-l) - l 之间的整数,包括 Emin 和 Emax。N 与 K 的范围则取决于当前采用的浮点数集合。

对于一个数字,可能存在多组 s、m与e的值来表示,此时,可以把 m 的值减半,而 e + 1,得到另一种表示,如果某种表示里 m >= 2^(n-1),则称该表示为标准表示,如果没有,如果 m >= 2^(n-1) 不成立,则称为非标准表示,如果一个数字不存在标准表示,则称这个值为非标准值。

至于 N、K 的范围,请参考下图:

我得承认,浮点数的表示理解起来是比较吃力,我当年读大学时就不理解,如今,还是一知半解。

关注我,带你揭秘 java jvm 奥妙,成为 java 大神。记得关注 + 收藏哦,请随意评论,多谢。返回搜狐,查看更多

责任编辑:

Java中null和浮点数相乘_jvm规范之浮点数 - 你知道吗,有个数字它和自身不相等...相关推荐

  1. java中null是常量吗_C_NULL Julia中的常量

    java中null是常量吗 Julia| C_NULL常数 (Julia | C_NULL Constant) C_NULL is a constant of Ptr{Nothing} type in ...

  2. 在Java中使用标准输入输出设备进行字符串,整数浮点数等 的输入输出操作

    在Java中使用标准输入输出设备进行字符串.整数浮点数等的输入输出操作 在Java语言中进行标准输入输出(键盘显示器)需要通过创建输入输出流对象的方式进行,一般情况下我们可以使用 BufferedRe ...

  3. java null什么意思_浅谈java中null是什么,以及使用中要注意的事项

    1.null既不是对象也不是一种类型,它仅是一种特殊的值,你可以将其赋予任何引用类型,你也可以将null转化成任何类型,例如: Integer i=null; Float f=null; String ...

  4. java 中 null==obj 与 obj==null

    之前上课,老师推荐将常量放前面进行判断,可以避免空指针的问题.忘记是以null == obj 还是 equals()方法进行说明了.下面进行实践复习. 一. null==obj 与 obj ==nul ...

  5. java中null与_java中NULL与 的区别

    null和""的区别 问题一: null和""的区别 String s=null; string.trim()就会抛出为空的exception String s ...

  6. java中null+““和null+null会等于什么鬼呢?

    在java中,null+""会等于什么鬼? null+""=? null+null又会等于什么鬼呢? null+null=? 直接上代码和截图. 注意:看如下代 ...

  7. java中表示根号三_Java命名规范

    定义规范的目的是为了使项目的代码样式统一,使程序有良好的可读性. 包的命名 (全部小写,由域名定义) Java包的名字都是由小写单词组成.但是由于Java面向对象编程的特性,每一名Java程序员都 可 ...

  8. java中null的使用方法_使用java中的方法避免!= null

    I want to avoid writing getView != null every time I want to use getView ? 您可以使用Null Object模式来避免在程序中 ...

  9. 在java中null的作用_在java中避免使用!= null有什么好处?

    使用空集合或"空白"操作而不是null的主要优点是,大多数情况下,此类对象仍然可以在代码中工作而无需进一步修改.从本质上来说,空值更容易出错. 请使用以下代码,例如: String ...

最新文章

  1. LeetCode实战:最长有效括号
  2. 南外计算机课,南外小升初,怎么考?
  3. 单点登录系统SSO概述 | 单点登录讲解(1)
  4. 【网址收藏】主流Ansible Web UI的部署与使用:Tower AWX Semaphore TiOps
  5. 不进行格式化将U盘快速转换为NTFS格式
  6. 洛谷——P1290 欧几里德的游戏
  7. 关于字体图标在firefox上本地访问无法显示的问题分析
  8. 通向码农的道路(enet开源翻译计划 二)
  9. 告别程序员生涯,一点感慨
  10. Java+Swing+mysql实现学生选课管理系统
  11. node.js:setTimeout实现同步delay延时函数
  12. 这些你曾深信不疑的大众心理学观点,都是谬论!
  13. Centos调整分区存储大小
  14. jQuery——淘宝购物车结算页面demo
  15. C/C++《数据结构课程设计》任务书[2022-12-27]
  16. P4在table中使用ternary匹配
  17. IOS获取农历节日.节气
  18. disk drill 中文版|disk drill pro v4.0.533中文便携版
  19. 快手扫码登录【2021-12-03】
  20. ASA广告投放之关键词的选择

热门文章

  1. .net中Task.WaitAll和WaitAny同步的等待Task完成
  2. no system images installed for this target这个问题如何解决?
  3. Android应用程序中的多个Activity的显示创建和调用
  4. 35岁是青春的后期你最好把下面十件事做好
  5. [转载] Python简介、linux上Python及其IDE的安装和详细配置
  6. [转载] 细思极恐的星座分析(下)- 外太空?内子宫?人类的天赋从何而来?
  7. MySQL中boolean类型设置
  8. 分享:Python中的位运算符
  9. Android MonkeyRunner
  10. SharePoint 2013 Ajax 造成页面无法编辑