java基础浮点类型

news2024/11/25 2:27:52

目录

1:float类型和double类型的定义

2:二者的范围和精度

3:float类型详解

3.1:整数位10进制转换为2进制

3.2:小数位10进制转换为2进制

3.3:把二进制放到浮点类型中

3.4:精度损失

4:double类型详解


1:float类型和double类型的定义

我们在现实生活中经常用到10进制的数据,比如整数和小数。但是小数经常出现小数点后无限循环的情况。比如圆周率的π和1/3。这些数字想要存入计算机中。我们只能使用double和float来存储。但是计算机的内存不是无限的。我们不可能真正的存储下这些数字。

float:单精度,占用4个字节的内存空间,也就是4*8=32位二进制。

double:双精度,占用8个字节的内存空间,也就是8*8=64位的二进制。

2:二者的范围和精度

在这里插入图片描述

3:float类型详解

在我们了解float和double类型之前,我们首先要知道10进制转换2进制的方法。

假如现在有一个10进制的数字是3.625

3.1:整数位10进制转换为2进制

我们首先把10进制的3转换为二进制,转换过程如下(除2取余)

整数位计算:除2取余
3/2=11
1/2=01

所以10进制的3转换为二进制就是从下往上:11

3.2:小数位10进制转换为2进制

我们首先把10进制的0.625转换为二进制,转换过程如下(乘以2,大于1取1,小于1取0)

小数位计算:乘以2取整数位(从上往下)
0.625*2=1.251
0.25*2=0.50
0.5*2=11

所以10进制的0.625转为二进制就是从上往下:101

那么得出结论10进制的3.625转换为二进制就是11.101

我们从验证工具得知

3.3:把二进制放到浮点类型中

在这里插入图片描述

从上边我们知道 3.625(10进制)=11.101(二进制)

在10进制下:  14.25=1.425*10^1

在二进制下:   11.101=1.1101*2^1

符号位:0代表正数,1代表负数

指数位:存储指数

底数位:存储底数

3.625(10进制)=11.101(二进制)=1.1101*2^1(二进制)

那么分析3.625的二进制

符号位:0

指数位:用8位来存储指数,范围是0-255(10进制),0-126代表负数,127代表0,128-255代表正数,再结合余127码,他应该存储1+127(10进制)即1000 0000(二进制)。

底数位:我们用23位来存储底数,1110 1000 0000 0000 0000 000(二进制),考虑到每个数转换为科学计数法之后每个数第一位必是1,所以我们从第二位开始存储,1101 0000 0000 0000 0000 000。

索引最终的结果就是

0 1000 0000 1101 0000 0000 0000 0000 000

自我测试

我们以1.0F-0.42F来举例子说明浮点数的运算规则

1.0F(单精度)=1(二进制)=1*2^0(二进制)

指数位是0:在8位二进制的是指数位,0+127代表0,127(10进制)=1111111(二进制)

0 0111 1111 0000 0000 0000 0000 0000 000

0.42F(单精度)=0.0110101110000101000111101=1.10101110000101000111101*2^-2

指数位是-2:在8位二进制的是指数位,127代表0,127-2=125代表-2

125(10进制)=0111 1101(二进制)

0 0111 1101 1010 1110 0001 0100 0111 101

3.4:精度损失

精度由尾数位数决定。
float:2^23 = 8388608 
double:2^52 = 4503599627370496
由此可见,float尾数为7位,double尾数为16位。因此,float的精度为6到7位有效数字,
double的精度为15到16位有效数字。

1.1(进制)=1.0001100110011001100110011001100110011001100110011001101*2^0(二进制)

在浮点类型中尾数部分分别能存储23位和51位,势必要截取掉多余的位数,就会导致精度损失。在运算的时候难以得到我们需要值。

    

4:double类型详解

跟float大同小异,理解float就能理解double。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/760719.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手动下载composer项目放在vendor目录下并加载

比如添加easywechat。 说是手动,其实半手动。 到GitHub或gitee下载 1、下载后放在项目根目录下的vendor文件夹 2、在项目根目录的文件composer.json文件添加一段 "autoload": {"psr-4": {"EasyWeChat\\": "vendor/overtrue/wech…

9.带你入门matlab假设检验(matlab程序)

1.简述 函数 ztest 格式 h ztest(x,m,sigma) % x为正态总体的样本,m为均值μ0,sigma为标准差,显著性水平为0.05(默认值) h ztest(x,m,sigma,alpha) %显著性水平为alpha [h,sig,ci,zval] ztest(x,m,sigma,alpha,tail) %sig为观察…

3.5 Bootstrap 输入框组

文章目录 Bootstrap 输入框组基本的输入框组输入框组的大小复选框和单选插件按钮插件带有下拉菜单的按钮分割的下拉菜单按钮 Bootstrap 输入框组 本章将讲解 Bootstrap 支持的另一个特性,输入框组。输入框组扩展自 表单控件。使用输入框组,您可以很容易地…

SpringCloud Alibaba——Ribbon底层怎样实现不同服务的不同配置

目录 一、Ribbon底层怎样实现不同服务的不同配置二、源码角度分析 一、Ribbon底层怎样实现不同服务的不同配置 为不同服务创建不同的spring上下文,不同的spring上下文中存放对应这个服务所有的配置。 二、源码角度分析 SpringClientFactory中可以获取到所有ribbon…

自动化运维工具——Ansible学习(一)

目录 一、运维自动化发展历程及技术应用 (二)程序发布相关知识 (三)常用的自动化运维工具 二、Ansible入门 (一)Ansible发展史 (二)特点 (三)Ansible架构 (四)工作原理 (五)Ansible主要组成部分 (六) 安装步骤 1.各种安装方法与命令 (1)rpm包安装:EPEL源…

一篇文章让你学会Elasticsearch中的查询

还是惯例,开头先放章节目录,如果有帮到你的地方,欢迎点赞关注转发,如有错误,欢迎指出,不胜感激 一、环境初始化 version: 3.8 services:cerebro:image: lmenezes/cerebro:0.8.3container_name: cerebroport…

ylb-支付服务pay

总览: 在pay模块util包下,创建签名工具类Pkipair和http工具类HttpUtil: package com.bjpowernode.util;import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.securi…

centos7 docker 安装sql server 2019

contos7安装sql server docker最低1.8或更高 卸载旧的docker sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine 装docker依赖包 #安装所需资源包 sudo yum install -…

mac 下 geoserver 安装

一、去官网下载geoserver https://geoserver.org/ 选择一个版本,然后点进去 二、需要配置java环境和设置geoserver 环境变量 1)、java 环境安装 Java Downloads | Oracle 中国 2)、环境变量设置 1.打开终端:command 空格键 2…

全卷积网络(FCN)

一:全卷积网络 义分割是对图像中的每个像素分类。 全卷积网络(fully convolutional network,FCN)采用卷积神经网络实现了从图像像素到像素类别的变换。与我们之前在图像分类或目标检测部分介绍的卷积神经网络不同,全卷…

融合自适应惯性权重和柯西变异的秃鹰搜索算法(CBES) - 附代码

融合自适应惯性权重和柯西变异的秃鹰搜索算法(CBES) 文章目录 融合自适应惯性权重和柯西变异的秃鹰搜索算法(CBES)1.秃鹰优化算法2.改进秃鹰优化算法2.1 Tent 映射2.2 自适应惯性权重2.3 柯西变异 3.实验结果4.参考文献5.Matlab代码6.python代码 摘要:针对基本秃鹰搜…

复习HashMap-2

在Java集合中,Map是一种特殊的集合,原因在于这种集合容器并不是保存单个元素,而是保存一个一个的Key-Vaue键值对.HashMap是基于哈希表的Map接口的实现,在项目开发中使用广泛,下面就对HashMap的源码进行解析. Hashmap的特点 1.HashMap是基于…

【Tauri + React 实战】VCluster - 配置应用图标与启动闪屏

本节我们将为 Tauri 应用自定义应用图标的启动闪屏 起步 通过 npm create tauri-applatest 我们成功创建了一个空白的 Tauri 项目,npm install安装好依赖后,通过 npm run tauri dev 即可开启热加载: 配置图标 官方示例很酷,但…

数仓报表数据导出——Hive数据导出至Clickhouse

1. Clickhouse建表 创建database create database ad_report; use ad_report;创建table drop table if exists dwd_ad_event_inc; create table if not exists dwd_ad_event_inc (event_time Int64 comment 事件时间,event_type String comment 事件…

运营实操,如何寻找自己产品的精准关键词

在进行Listing优化时,许多卖家感到困惑,不知从何入手。尽管他们听过许多关于优化的文章,但实际操作时仍不清楚何为好的标准。 亚马逊产品列表的另一个重要元素是图片。图像体验很大程度上决定了客户是否会继续浏览,仅仅依靠文字故…

Linux--查看man手册中某个函数的库函数

第一步:man 函数名 第二步:查看是否存在 第三步:如果不存在,则输入man 2 exit依次类推3、4.....

STM32开发笔记:中断

一、中断系统 中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行。 中断优先级&#x…

c++11 标准模板(STL)(std::basic_istream)(九)

定义于头文件 <istream> template< class CharT, class Traits std::char_traits<CharT> > class basic_istream : virtual public std::basic_ios<CharT, Traits> 类模板 basic_istream 提供字符流上的高层输入支持。受支持操作包含带格式的…

静态数码管显示

学习芯片&#xff1a; EP4CE6F17C8 本次学习使用的为共阴极数码管&#xff0c;即用低电平点亮数码管&#xff0c;同样可知&#xff0c;共阳极数码管的阳极连在一起&#xff0c;即用高电平点亮数码管。 八段数码管示意图&#xff1a; a,b,c,d,e,f,g,dg表示八段数码管时&#…

分类预测 | MATLAB实现基于Attention-LSTM的数据分类预测多特征分类预测(长短期记忆网络融合注意力机制分类预测,含混淆矩阵图、分类图)

分类预测 | MATLAB实现基于Attention-LSTM的数据分类预测多特征分类预测(长短期记忆网络融合注意力机制分类预测&#xff0c;含混淆矩阵图、分类图) 目录 分类预测 | MATLAB实现基于Attention-LSTM的数据分类预测多特征分类预测(长短期记忆网络融合注意力机制分类预测&#xff…