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

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. python pip 升级 或者换源

    1. 临时换源python -m pip install --upgrade pip -i https://pypi.douban.com/simple pip国内的一些镜像   阿里云  https ...

  2. 04webpack--webpack-dev-server 时时跟新

    <!-- 如何添加npm run dev 启动程序 下载npm i webpack-dev-server -S 在pack.json中添加 "dev": "webp ...

  3. Appium左右、上下滑动(Java)

    网上很多文章都说用swipe来左右滑动,你把代码一贴,结果报错,看半天,原来是java-client中swipe早就被废除了!!!下面介绍一种Java写法来左右上下滑动: 首先,创建一个Swipe类 ...

  4. HTML简介 页面标记

    HTML简介 HTML 1.0 : 1993年 HTML 2.0 : 1995年 HTML 3.2 : 1997年 HTML 4.01 : 1999年 HTML  5 : 2008年 XML:可扩展标 ...

  5. verilog语法标准

    initial 中语句超过一需要添加begin和end: 1995 2001 介绍了当用逗号分隔敏感列表更方便构成事件控制表达式的选择条件: 2005 2001/2005语法标准,没有类型定义的任何标 ...

  6. EM-高斯混合模型

    EM-高斯混合模型 认识 前面为了直观认识 EM 算法, 用的"扔硬币"的案例, 是为了简化和直观, 而稍微偏应用和深入一点是高斯模型分类,这样一个话题. 就好比我们现在有一堆的数 ...

  7. pyqt5环境变量踩坑记

    之前用一个cmd脚本 wmic ENVIRONMENT create name="QT_QPA_PLATFORM_PLUGIN_PATH",username="<s ...

  8. Linux上error while loading shared libraries问题解决方法

    在Linux环境执行程序时经常会遇到提示程序依赖动态库.so文件不存在的情况,出现报错"error while loading shared libraries: XXXX.so.XX: c ...

  9. Educational Codeforces Round 69 (Rated for Div. 2) C. Array Splitting 水题

    C. Array Splitting You are given a sorted array

  10. CentOS设置主机名称

    1.查看主机名,使用命令hostname: 2.修改主机名,修改/etc/hostname文件