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

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. Java jdom解析xml文件带冒号的属性

    Java jdom解析xml文件带冒号的属性 转载请标明出处: https://dujinyang.blog.csdn.net/article/details/99644824 本文出自:[奥特曼超人 ...

  2. client-go集群外认证k8s

    除了认证外,还判断了操作系统. 且根据不同的系统,生成不同的文件. 在集群外认证时,使用的是k8s官方的方式, 而不是第三方库. package main import ( "flag&qu ...

  3. luoguP1040 加分二叉树

    在做各类DP的时候都要思路清晰! #include<cstdio> #include<algorithm> using namespace std; const int N = ...

  4. 1、zabbix监控基础概念

    目录 为什么要使用监控? 监控怎么用? 去到一家新公司,应该如何搭建监控系统? 我叫张贺,贪财好色.一名合格的LINUX运维工程师,专注于LINUX的学习和研究,曾负责某中型企业的网站运维工作,爱好佛 ...

  5. MNIST手写数字识别进阶:多层神经网络及应用(1)

    # 一.载入数据 import tensorflow as tf import numpy as np #导入tensorflow提供的读取MNIST的模块 import tensorflow.exa ...

  6. luoguP3292 [SCOI2016]幸运数字(倍增做法)

    题意 线性基套上树上倍增即可,注意边界. code: #include<bits/stdc++.h> using namespace std; typedef long long ll; ...

  7. go语言的redis客户端

    redis3.0之后提供了新的HA的解决方案,即Cluster模式,由多个节点组成的集群模式.集群master之间基于crc16算法,对key进行校验,得到的值对16384取余,就是key的hash ...

  8. 阿里Sentinel支持Spring Cloud Gateway啦

    1. 前言 4月25号,Sentinel 1.6.0 正式发布,带来 Spring Cloud Gateway 支持.控制台登录功能.改进的热点限流和注解 fallback 等多项新特性,该出手时就出 ...

  9. react、less、antd-mobile 报错Inline JavaScript is not enabled. Is it set in your options?

    增加less-loader里面的配置.如图或者降级less到2.x版本

  10. 项目倒入maven 遇到的问题只有 main 了

    归根结底是倒入错了: (1)首先  view->Toolbar; (2) 点击 File==>project structure 然后:在 project settings中点击 modu ...