结论:数值范围大小和占用的字节没有关系

float类型的范围:

  • 负数:-3.402823E38~-1.401298E-45

  • 整数:0

  • 正数:1.401298E-45~3.402823E38

long类型的范围:

  • -2的63次方到2的63次方-1(-9223372036854775808~9223372036854775807)

float在内存中占4个字节,共32位,但是浮点数在内存中时这样的:

IEEE浮点标准:V = (-1) ^ S * M * 2 ^ E
浮点型数值内存分配示意图
第一位 第二位到第九位 第十位到第三十二位
S E M

其中第1位,符号位,即S。

接下来的8位,指数域,即E。

剩下的23位,小数域,即M,M的取值范围为[1,2)或[0,1)。

也就是说,浮点数在内存中的二进制值不是直接转换为十进制数值,而是按照公式计算得出,通过公式,虽然只用到了4个字节,但是浮点数却比长整型的最大值要大。

示例如下:

 int n = 123456789;
float f = n; // f is 1.23456792E8

从n到f转换时,虽然得到了同样大小的结果,但却失去了一定的精度。

说白了就是long类型占用8个字节,是为了严密精确的表达每一位数值。float类型占用了4个字节,虽然表示数据范围更大,但是存在精度损失。

那么为什么不把float占用的字节数也扩大,达到严密精确呢?

这是因为使用了IEEE浮点标准!

long类型在内存中占8个字节,float类型在内存中占4个字节,为什么long还要比float小呢?的更多相关文章

  1. 一个 -100.01 的double 在内存中怎么存储的. 一个中文String 在内存中占多少直接 utf-8 / GBK

    一.-100.01 的double 在内存中怎么存储的 double双精度数据类型存储格式IEEE 双精度格式为8字节64位,由三个字段组成:52 位小数 f : 11 位偏置指数 e :以及 1 位 ...

  2. 【转】float类型在内存中的表示

    http://www.cnblogs.com/onedime/archive/2012/11/19/2778130.html http://blog.csdn.net/adream307/articl ...

  3. float数据在内存中是怎么存储的 AND IEEE754测试程序

    float类型数字在计算机中用4个字节存储.遵循IEEE-754格式标准: 一个浮点数有2部分组成:底数m和指数e 底数部分 使用二进制数来表示此浮点数的实际值指数部分 占用8bit的二进制数,可表示 ...

  4. AS3游戏中可视对象上限及位图相关的内存消耗实测

    前些天连续做了一些测试,以加深对AS3的掌握和在项目中对 游戏 性能.效率优化方面的一些处理,有很多测试实际意义不大,都不过是证明一些猜想是正确的,除此没有什么. 但前天进行的一系列测试中,有一些对游 ...

  5. Java中为什么long能自动转换成float类型

    刷题时候看到一个float和long相互转换的问题,float向long转换的时候不会报错,一个4个字节一个8个字节,通过baidu找到了答案. 下面转载自http://blog.csdn.net/s ...

  6. 牛客网Java刷题知识点float数据在内存中是怎么存储的

    不多说,直接上干货! float类型数字在计算机中用4个字节存储. 遵循IEEE-754格式标准: 一个浮点数有2部分组成:底数m和指数e (1)底数部分 使用二进制数来表示此浮点数的实际值 (2)指 ...

  7. 为什么Java中Long类型的比float类型的范围小?

    为什么Long类型的比float类型的范围小? 2015-09-15 22:36 680人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. 作为一个常识,我们都知道浮 ...

  8. float数据在内存中存储方式

    float类型数字在计算机中用4个字节存储.遵循IEEE-754格式标准: 一个浮点数有3部分组成: 符号部分,0 表示正,1表示负. 底数部分 使用二进制数来表示此浮点数的实际值,底数部分实际是占用 ...

  9. 推荐收藏系列:一文理解JVM虚拟机(内存、垃圾回收、性能优化)解决面试中遇到问题(图解版)

    欢迎一起学习 <提升能力,涨薪可待篇> <面试知识,工作可待篇 > <实战演练,拒绝996篇 > 欢迎关注我博客 也欢迎关注公 众 号[Ccww笔记],原创技术文章 ...

随机推荐

  1. SRDC - ORA-1548: Checklist of Evidence to Supply (Doc ID 1682693.1)

    SRDC - ORA-1548: Checklist of Evidence to Supply (Doc ID 1682693.1) Action Plan 1. Execute srdc_db_u ...

  2. Linux—管理用户、用户组及权限

    管理用户 添加用户 [root@localhost ~]# useradd myuser [root@localhost ~]# useradd -m myuser # -d 目录:指定用户主目录,如 ...

  3. Linux—yum使用详解

    yum配置 yum的配置文件在  /etc/yum.conf  参考:https://www.cnblogs.com/yhongji/p/9384780.html yum源配置 yum源文件在 /et ...

  4. Jenkins+Jmeter配置(Linux环境)

    1.安装jenkins. 1.1在Linux服务器上,必须先安装jdk与Tomcat, 在/opt/tools/tomcat 安装解压Tomcat 1.2.在Linux服务器上安装jmeter 在/o ...

  5. MongoDB介绍(一)

    MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功 ...

  6. 更换github账号后,push被旧账号阻止

    和网上多数的教程不同,我是需要直接更换账号.切换后push一直被阻止.解决后记录下办法 remote: Permission to new-name/practice.git denied to ol ...

  7. 实时获取input框内容

    源码: <%@ page language="java" contentType="text/html; charset=utf-8" pageEncod ...

  8. luoguP3181 [HAOI2016]找相同字符

    题意 考虑将\(s1\)和\(s2\)接在一起求出相同子串个数,再求出\(s1\)自己匹配的相同子串个数和\(s2\)自己匹配的相同子串个数减去即可. 如何求相同子串个数: 我们知道子串的集合即所有后 ...

  9. redis数据查看工具

    Redis缓存数据库目前已大量的应用,广泛用于存储session信息,权限信息,交易作业等热数据.但是Redis存在的数据可视化不便.Redis的数据查看维护困难.Redis状态监控运维不易等问题.使 ...

  10. Shell编程——运算符

    1.declare命令: 声明变量的类型: -:给变量设定类型属性 +:给变量取消类型属性 -i:将变量声明为整数类型 -x:将变量声明为环境变量 -p:显示变量的类型 其中export是将num变为 ...