当前位置: 首页 > news >正文

float的表示范围为什么比long大

●很多人会有一个疑问, 一个用来表示小数的 float 为什么表示的范围会比 long 还要大呢 ?
●这次, 咱们就来详细说一说这个事情
从长计议
●聊到这个话题, 我们就要从计算机存储数字这个位置说起了
●计算机存储数字的方式其实就是 : 二进制
二进制是计算机中最基本的数字存储方式,所有的数字都是以0和1的二进制数表示的。计算机中的内存和处理器等硬件组件都是以二进制为基础来设计的。计算机通过将数字转换成二进制数,然后以二进制形式存储在内存中。
●进制 : 其实就是我们数数的时候进位的方法
在这里插入图片描述

●也就是说, 我们的数字包括其他内容在内, 都会转变为二进制的形式存储起来
●例子:
○一个数字是 6, 转化成二进制以后就是 110
○那么在计算机存储的时候, 其实存储的就是 110

单位

●我们除了知道存储方式以后, 还要知道一个事情, 就是计算机的存储单位
●刚才我们说了, 每一个数据其实都是按照二进制的形式存储的
●在计算机的二进制存储中,每一个二进制数位称为一个位(bit), 每8位二进制数被称为一个字节(byte),通常表示为8个0和1的序列
●字节(B), 就是我们通常计算机中的一种存储单位而已, 我们一般的计算机都是按照字节来存储的
●例子 :
○有一个数字是 0, 二进制转换以后是 0, 那么就会占一个 位
○有一个数字是 1, 二进制转换以后是 1, 那么也是会占一个 位
○但是我们思考一下, 存储的时候, 就是占了两个位, 可是他俩不能放在一起存储啊
○一旦放到一起, 到底是 01 还是 10 还是 一个 0 和 一个 1 呢 ?
●所以, 所有的数据存储都会按照自己来存储, 也就是 byte
●换句话说, 就是一个数字哪怕是一个位, 那么存储的时候也会占据一个字节的位置
○也就是说 : 一个数字是 1, 二进制以后是 1, 因为要占据一个字节
○会把这个 1 变成 0000 0001 这样的形式来存储
○这样就刚刚好占据了一个字节的位置
●根据上面的说法来看, 一个自己(byte) 存储的最大范围就是
○1111 1111 也就是 255 这个数字
○但是我们考虑到还有正负数的关系, 所以一个字节里面还要有一位表示正负的位
○所以, 其实就是 -128 ~ 127 之间的取值范围
●问题来了
○那么 -129 或者 300 这些数字怎么存储呢 ?

不同的数字类型
既然一个字节只能存储 -128 ~ 127 范围内的数字, 那么其他的数字怎么办呢, 不存了吗 ?
这个时候, 我们就要来聊一下数字的存储方式了(以 Java 或者 C 或者 C++ 语言为例)
byte
如果以 byte 定义一个数字, 就是告诉你的电脑, 我要申请一个字节的位置存储数据
那么电脑会分配给你一个字节来存储当前数据, 所以只能存储 -128 ~ 127 之间的数字

short
如果以 short 定义一个数字, 就是告诉你的电脑, 我要申请两个字节的位置来存储数据,那么电脑会分配给你两个字节来存储当前数据,一个字节有 8 个位, 那么两个字节就是 16 个位。
换句话说, 如果以 byte 的形式存储数字1, 那么是 0000 0001
如果以 short 来存储一个数字1, 那么是 0000 0000 0000 0001
所以 short 存储数字的最大范围就是 -32,768 到 32,767

int
同样的道理, int 也可以用来定义存储一个数字 int 表示的数字会占四个字节的位置, 也就是 32 位
取值范围就是 -2,147,483,648 到 2,147,483,647

long
同样的道理long 表示的数字会占八个字节的位置, 也就是 64 位
取值范围就是 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
你看这样就好理解的多了

long 类型
long 这个类型很有意思,在不同的解析器或者编译器内, long 的表示形式不一样,上面我们说的,long 在 java, c, c++ 内都是表示 64位, 也就是 8 个字节的位置,但是long 在 javascript 内。
根据 js 解析器来分析,long 就表示 32 的数字, 也就是占 4 个字节的位置
取值范围就是 -2,147,483,648 到 2,147,483,647
好了,到现在为止, 我们知道了 long 是怎么存储的,接下来该到了 float 了

存储小数
刚才说完了整数, 接下来我们就来说一说小数
在计算机存储小数的时候有两种方法

1.定点数表示法
定点数表示法是指把小数点固定在某个位置上,用整数来表示小数部分的一种方法。通常使用定点数表示法的情况下,小数点的位置被固定在一个确定的位置上,比如在小数点后一位或两位。
例如,如果将小数点固定在第一位,那么可以把小数0.123表示为整数123。如果将小数点固定在第二位,那么可以把小数0.123表示为整数1230。
这不是我们需要的, 就不纠结了

2.浮点数表示法
浮点数表示法其实就是浮动小数点的方法来表示一个小数
我们通常会分为单精度浮点数和双精度浮点数
这个才是我们纠结的事情, 所以要详细解释一下
详细了解一下浮点数

1.单精度浮点数
单精度浮点数的存储占用 4 个字节, 也就是 32 位
其中第一个位表示的是 符号, 也就是 正负数,其中第二个到第九个这 8 位来做指数占位,最后就是尾数占 23 位

在这里插入图片描述
表示范围约为 1.4E-45 到 3.4E+38,精度为大约7位有效数字

2.双精度浮点数
双精度浮点数存储占用 8 个字节, 也就是 64 位
其中第一个位表示的是 符号,其中第二个到第十二个这 11 位来做指数占位,最后就是位数占 52 位
表示范围约为 4.9E-324 到 1.8E+308,精度为大约 15 位有效数字

结论
事已至此, 我们该准备的都准备好了 在 JavaScript 解析器内
long 表示的是 32 的数字, 取值范围就是 -2,147,483,648 到 2,147,483,647
float 表示的是 32 位浮点数, 因为有指数加成, 取值范围就是 1.4E-45 到 3.4E+38
所以我们才会说, float 的取值范围会比 long 还要大

相关文章:

float的表示范围为什么比long大

●很多人会有一个疑问, 一个用来表示小数的 float 为什么表示的范围会比 long 还要大呢 ? ●这次, 咱们就来详细说一说这个事情 从长计议 ●聊到这个话题, 我们就要从计算机存储数字这个位置说起了 ●计算机存储数字的方式其实就是 : 二进制 二进制是计算机中最基本的数字存储…...

Flutter Android 打包保姆式全流程 2023 版

大家好,我是 17。 为什么要写这篇文章呢?对于一没有 android 开发经验,从未有过打包经历的新人来说,要想成功打包,是很困难的。因为受到的阻碍太多,是完全陌生的领域,几乎是寸步难行。如果有老…...

C++笔记之lambda表达式

引言 Lambda表达式是从C 11版本引入的特性,利用它可以很方便的定义匿名函数对象,通常作为回调函数来使用。大家会经常拿它和函数指针,函数符放在一起比较,很多场合下,它们三者都可以替换着用。 语法 [ captures ] (…...

flink大数据处理流式计算详解

flink大数据处理 文章目录flink大数据处理二、WebUI可视化界面(测试用)三、Flink部署3.1 JobManager3.2 TaskManager3.3 并行度的调整配置3.4 区分 TaskSolt和parallelism并行度配置四、Source Operator(资源算子)五、Sink Operator(输出算子)六、Flink滑…...

Java面试题(二十三)DCL单例

懒汉式单例 private static SingletonInstance INSTANCE;private SingletonInstance(){}public static SingletonInstance getInstance() {if (INSTANCE null) {INSTANCE new SingletonInstance();}return INSTANCE;}构造方法私有化,然后判断是否为空,…...

UML-类图

一、类 一个类由三个格子组成,从上至下分别表示: 第一格:类名称(接口和抽象类,使用斜体) 第二格:类的属性(成员变量,可以没有) 第三格:类的操作&…...

PostgreSQL 数据库和 pgAdmin 4

PostgreSQL 数据库和 pgAdmin 4PostgreSQLPostgreSQL 数据库安装PostgreSQL 数据库安装 (Ubuntu)PostgreSQL 数据库其他系统安装PostgreSQL 数据库快速使用入门登录数据库访问数据库参考pgAdmin 4pgAdmin 4 安装使用 pgAdmin 4 登录数据库参考PostgreSQL PostgreSQL 数据库安装…...

quarkus 搭建与基础开发环境配置总结

quarkus搭建与基础开发环境配置总结 大纲 基础概念quarkus2.13.7脚手架工程配置配置maven3.8.7quarkus快速启动quarkus的三种打包方式quarkus将程序打包为二进制文件window环境下quarkus云原生二进制文件打包环境搭建使用GraalVM-java11替换本地java8运行二进制文件 基础概念…...

扩散模型DDPM开源代码的剖析【对应公式与作者给的开源项目,diffusion model】

扩散模型DDPM开源代码的剖析【对应公式与作者给的开源项目,diffusion model】一、简介二、扩散过程:输入是x_0和时刻num_steps,输出是x_t三、逆扩散过程:输入x_t,不断采样最终输出x_0四、具体参考算法流程图五、模型mo…...

C语言 学生记录管理系统

学生记录管理系统 1--添加 2--删除 3--查询:按姓名 4--查询:按班级 5--查询:按学号 0--退出 请选择操作序号(0—5):1 请输入新学生的学号:1 请输入新学生的…...

【独家】华为OD机试 C 语言解题 - 交换字符

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明本期…...

网络安全平台测试赛 easyphp(phar脏数据处理)

昨天的比赛,14.00-17.00.时间有点紧张,比赛期间没拿下来这道 😭非常痛苦,很顺畅的思路 一步步想下来,卡在最后一步末尾脏数据处理了,最后时间到了 没打通,还需多练 这里本地复现一下&#xff1…...

【python】XML格式文件读写详解

注:最后有面试挑战,看看自己掌握了吗 文章目录XML介绍格式XML与AJAX与HTML区别联系生成XML文件案例用SAX模块处理XML用DOM模块处理XML🌸I could be bounded in a nutshell and count myself a king of infinite space. 特别鸣谢:…...

理解js的精度问题

参考博客:js精度丢失问题-看这篇文章就够了(通俗易懂)、探寻 JavaScript 精度问题以及解决方案、JavaScript 浮点数陷阱及解法 1 为什么 JavaScript 中所有数字包括整数和小数都只有一种类型 即 Number类型,它的实现遵循 IEEE 754 标准。 符号位S&#…...

蓝桥杯 时间显示

题目 输入输出样例 示例 1 输入 46800999输出 13:00:00示例 2 输入 1618708103123输出 01:08:23评测用例规模与约定 对于所有评测用例,给定的时间为不超过 10^{18}1018 的正整数。 运行限制 最大运行时间:1s最大运行内存: 512M 基础知识 时间的转换…...

qt中设置菜单高度

如题所示,我建立一个菜单,代码如下,但是菜单项的高度太小了, { popupMenu new QMenu(this); QAction *action1 new QAction(tr(“&New1”), this); QAction *action2 new QAction(tr(“&New2”), this); QA…...

测开:前端基础-css页面布局-定位

一 、传统网页布局的三种方式 网页布局的本质–用CSS来摆放盒子,把盒子摆放到相应的位置,css提供了三种传统布局方式,分别是标准流,浮动和定位三种。 二、 定位 2.1 啥是定位 我的理解,就是要把这个元素&#xff0c…...

Servlet中八个监听器介绍

一、监听对象创建的监听器 1、ServletContextListener /*** 用于监听ServletContext对象创建和销毁的监听器* since v 2.3*/public interface ServletContextListener extends EventListener {/*** 对象创建时执行此方法。该方法的参数是ServletContextEvent事件对象&#xf…...

LicenseBox Crack,对服务器的要求最低

LicenseBox Crack,对服务器的要求最低 LicenseBox是用于管理基于PHP的软件、WordPress插件或主题、主题、插件和WordPress的更新和许可的完整软件。它易于安装,对服务器的要求最低,用户友好的界面,无限脚本的使用为您的创造力打开了大门。 Li…...

css中重难点整理(vertical-align)

一、vertical-align 在学习vertical-align的时候,可能会很困惑。即使网上有一大推文章讲veitical-align,感觉看完好像懂了,等自己布局的时候用到vertical-align的时候好像对它又很陌生。这就是我在布局的时候遇到的问题。 本来vertical-align就很不好理…...

龙虎榜——20250610

上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 ​ 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...