float与double数据类型详解

【详细解说】单精度浮点数float取值范围 详细解说单精度浮点数float的取值计算,以及特殊值inf,NaN的说明 阅读详情

1.float与double的存储规则
float:占用4个字节,即32bit。
存储方式:1bit符号位+8bit指数位+23bit尾数位。
double:占用8个字节,即64bit。
存储方式:1bit符号位+11bit指数位+52bit尾数位
2.取值范围
取值规则:(浮点)数值=尾数*底数^指数(附加正负号)
指数:为一个无符号整数,但因为指数可以为负数,因此:
表示float时,在存入指数时在原值上加上一个中间值127,因此取值范围为-127~128;
表示double时,在存入指数时在原值上加上一个中间值1023,因此取值范围为-1023~1024;
底数:用十进制表示是10,用二进制表示就是2.
float的范围:-2^128 ~ +2 ^128,即-3.40E+38 ~ +3.40E+38;
double的范围:-2^1024 ~ +2 ^1024,即-1.79E+308 ~ +1.79E+308;

例:十进制2.125为例。
1.float类型
步骤一:先将22.125转换成二进制。
整数部分22的二进制位10110(除2取余,将余数倒序排列)
22/2=11 11/2=5余1 5/2=2余1 2/2=1 1/2=0余1 即22二进制为10110。
小数部分0.125的二进制0.001(乘2取整,将整数部分依次从左到右放在小数点后)
0.1252=0.25 0.252=0.5 0.52=1 即0.125的二进制为0.001。
上述可得22.125二进制数为10110.001
步骤二:用二进制的科学计数法表示22.125(D)=10110.001(B)=1.0110001
2^4(B)
即:十进制2.125的float类型符号位为0(正数)、尾数为0110001(1.0110001的小数部分)、底数为2、指数为4(D)+127(D)=131(D)=10000011(B).
综上所述:22.125的float存储结果为0 10000011 01100010000000000000000.
1.float类型
步骤一:先将22.125转换成二进制。
整数部分22的二进制位10110(除2取余,将余数倒序排列)
22/2=11 11/2=5余1 5/2=2余1 2/2=1 1/2=0余1 即22二进制为10110。
小数部分0.125的二进制0.001(乘2取整,将整数部分依次从左到右放在小数点后)
0.1252=0.25 0.252=0.5 0.52=1.0 即0.125的二进制为0.001。
上述可得22.125二进制数为10110.001
步骤二:用二进制的科学计数法表示22.125(D)=10110.001(B)=1.0110001
2^4(B)
即:十进制2.125的float类型符号位为0(正数)、尾数为0110001(1.0110001的小数部分)、底数为2、指数为4(D)+1023(D)=1027(D)=100 0000 0011(B).
综上所述:22.125的double存储结果为
0 100 0000 0011 01100010000000000000000 00000000000000000000000000000.

细节:基本数据类型floatdouble的区别 一、两者定义 float:单精度浮点数 double:双精度浮点数 二、两者的主要区别   01)在内存中占有的字节数不同     单精度浮点数在机内存占4个字节     双精度浮点数在机内存占8个字节   02)有效数字位数不同     单精度浮点数有效数字8位     双精度浮点数有效数字16位   03)数值取值范围     单精度浮点数的表示范围:-3.40E+38~3.40E+38     双精度浮点数的表示范围:-1.79E+308~-1.79E+308   04) 阅读详情

相关推荐

SparkSQL 之处理Float Double浮点数据类型

数据源信息样例: GCSL00000673,0,JL225390810101,1,286.5,286.5 GCSL00000673,1,84126312010104,1,329.7,329.7 GCSL00000673,2,24126312011502,1,412.2,412.2 GCSL00000673,3,84126388563204,1,372.9,372.9 GCSL0...

小狐狸的博客 5245

doublefloat的精度取值范围

(1)占用字节不同 float占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38。 double占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308。 (2) float只能提供七位有效数字。 double可提供16位有效数字。 float的范围 2^-128到 2^127 ...

liyang_nash的专栏 4万+

char类型、int类型、double类型、float类型、long在“计算机”内存中占多少个字节?

不同编译器,字节占位。

汽车电子软件领域知识分享 3万+

double float 的区别

也是一个不错的选择。具体选择哪种类型,需要根据实际情况需求来决定。但如果对精度要求不高,且希望节省内存空间,那么使用。因此,在需要高精度大范围的场合,应优先考虑使用。

我的博客 1万+

变量数据类型:int、float、char、double

在编程中,变量是一个命名的存储位置,用于保存数据值。你可以把变量想象成一个盒子,里面可以存放不同类型的东西(数据),而变量的名字就是盒子的标签。// 声明一个名为age的整数变量,并赋值为25这里,int是数据类型,指定了变量age只能存储整数值。变量的使用使得程序能够动态处理数据,提高了代码的灵活性可读性。数据类型定义了变量可以存储的数据种类、大小操作。int:用于存储整数。float:用于存储单精度浮点数(小数)。char:用于存储单个字符。double

always_TT的博客 2万+

基本数据类型doublefloat的区别

基本数据类型doublefloat的区别 float : 单精度浮点数 double : 双精度浮点数 转载:https://www.cnblogs.com/liutianci/p/8443372.html 两者的主要区别如下: 01.在内存中占有的字节数不同 单精度浮点数在机内存占4个字节 双精度浮点数在机内存占8个字节 02.有效数字位数不同 单精度浮点数有效数字8位 双精度浮点数有效数字1...

KeepOnJiJi的博客 1267

mysql数据类型floatdouble、decimal区别

floatdouble、decimal区别联系: 1.floatdouble都浮点类型,而decimal是定点类型 2.三者都可以使用(M,D)的形式来声明,比如float(5,2),double(5,2),decimal(5,2),M表示总共长度,D表示小数点后面的长度; 3.floatdouble、decimal也都可以什么用也不加的方式来定义,比如 num1float,num2 double, num3 decimal,在这种情况下, floatdouble默认会按你实际存入的数..

xiaozhuangyumaotao的博客 1779

java double to float_JAVA 基本数据类型 double float

1.double是4个字节,float 是8个字节。2.在程序需要注意的是,以下两种定义方式:double d =3.14 ; 这是正确的float f =3.14; 这个是错的 。我们默认的话是把小数当作double类型。 所以我们写的float不匹配。而且如果进行强转换,把float转为 double .也就是8个字节的转为4个字节的会造成精度丢失。所以编译的时候也会报错。3.double...

weixin_39966644的博客 867

Android常用数据类型(String 、int、floatdouble、)转换

Android常用数据类型(String 、int、floatdouble、long)转换 因为经常用到类型装换,所以整理一下,方便查找: 一、String转int,floatdouble,long. int i = Integer.parseInt(str) 或者 int i = Integer.valueOf(str).intValue(); float f = Float.pa...

yue_233的博客 1万+

深入解析 MySQL 数据类型:DECIMAL、FLOAT DOUBLE 的比较应用场景

MySQL 数据库中的数值类型 DECIMAL、FLOAT DOUBLE 在存储数值时具有不同的特性用途。DECIMAL 以固定精度存储精确小数值,FLOAT DOUBLE 则是近似数值类型,提供不同范围精度的浮点数存储。本文将探讨这些数据类型的差异,涵盖它们在不同应用场景下的优劣势、存储空间、性能影响、实际应用举例、比较分析以及最佳实践建议,助您更好地选择适合您数据库需求的类型。

专注于深入研究多种编程语言,以实战为导向,逐步拓展开发技能,提升工程化编码和思维能力,展现无敌技术实力。 2239

MySQL数据库存储价格金额使用的数据类型floatdouble、decimal的区别

float类型表示单精度浮点数值,double类型表示双精度浮点数值,floatdouble都是浮点型,而decimal是定点型; MySQL 浮点型定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度,MD又称为精度标度,如float(5,2)的 可显示为999.99,MySQL保存值时会进行四舍五入,如果插入999.009,则结果为999.01。 floatdouble在不指定精度时,默认会按照实际的精度来显示,而DECIMAL在不指定精度时,默认整数为1

han_cui的博客 1万+

准确详解:C/C++ floatdouble数据类型的表示范围及精度

本文转载自:https://blog.csdn.net/black_kyatu/article/details/79257346 今天复习C++遇到了floatdouble数据类型的表示范围及精度问题,花费了一些时间重新梳理了一遍,鉴于网上很多文章写的并不清晰,并且有不少疏漏错误之处,特结合个人理解仔细整理如下。 要弄清楚这个问题,首先要搞清楚浮点数在内存中的存储方式。浮点数,区别于定点数,指的是小数点位不确定的的数据类型,其原理是将一个浮点数a用两个数m(尾数)e(指数)来表示:a = m × b^e

qq_41117896的博客 7499

JAVA 基本数据类型 double float

1.double是4个字节,float 是8个字节。 2.在程序需要注意的是,以下两种定义方式: double d =3.14 ; 这是正确的 float f =3.14; 这个是错的 。我们默认的话是把小数当作double类型。 所以我们写的float不匹配。而且如果进行强转换,把...

459

float , double , long 数据类型的精度问题

float: 1bit(符号位)+ 8bits(指数位) + 23bits(尾数位) double: 1bit(符号位)+ 11bits(指数位)+ 52bits(尾数位) floatdouble的范围是由指数的位数来决定的 float的范围为-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38; double的范围为-2^1024 ~ +2^1024,也即...

qq_34851243的博客 4634

double数据类型float数据类型 计算 精度问题

double数据类型float数据类型 计算 精度问题: public class ArithUtil { private static final int DEF_DIV_SCALE = 10; //String类型数据的+-*/ //加 public static double add(String d1, String d2) { BigDe...

zuo_er_lyf的博客 388

java中int double float等八种基本数据类型

首先我们先了解一下基本数据类型 基本数据类型有八种 bit:一个字节的数据类型(8位),范围是-128到127。 short:两个字节,占16位。范围是-(2的15次方)到(2的15)-1一般不用这种数据类型。 int:这是我们最常见也是最常用的数据类型。现在一般的计算机都是64位操作系统。(位)是指计算机一次计算能够处理的二进制的个数。一下各种类型都是在这种操作系统下进行讨论。int类型的数据...

0bug0warning的博客 6388

Java面试-基本数据类型详解:int、long、floatdouble 的区别使用场景

《Java基本数据类型详解》摘要:本文深入解析int、long、floatdouble四种核心数据类型。通过"int溢出导致7亿损失"的案例,揭示数据类型选择的重要性:int范围±21亿,long适合更大数值;float存在精度问题(如0.1+0.2≠0.3),金融计算推荐double。关键知识点包括:类型转换规则、内存占用对比、字面量后缀(L/f)使用,以及大厂常见面试题剖析。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+
上一篇: 江西省南昌市新建县大溪熊氏字辈
BerryBearDream
博客等级 码龄9年 154粉丝 14原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值