精华内容
下载资源
问答
  • 单精度浮点数

    2021-01-16 00:06:51
    单精度浮点数采用IEEE754标准->|符号S|阶码M|尾数N| 符号:1为负数,0为正数。节码:用移码表示,加上偏移量(01111111)。尾数:范围[1~2),省略高位1 浮点数的表示范围: 上溢机器停止运算,进行中断溢出处理。下溢...

    单精度浮点数采用IEEE754标准->|符号S|阶码M|尾数N|

    符号:1为负数,0为正数。节码:用移码表示,加上偏移量(01111111)。尾数:范围[1~2),省略高位1

    浮点数的表示范围:

    在这里插入图片描述

    上溢机器停止运算,进行中断溢出处理。下溢通常将尾数取零,按0处理。

    单精度浮点数转十进制实数

    先尾数*(2^(阶码-127))再转成10进制最后加上符号

    十进制实数转单精度浮点数

    先将实数转2进制,再将二进制规范化(类似科学计数法让其符合[1~2))得出阶码和尾数,阶码再加上127得到偏移的阶码,最后加上符号。

    符号+偏移的阶码+尾数

    为什么偏移量是127而不是128

    因为浮点数有一些特殊的值需要使用全0和全1的偏移的阶码

    剩下的偏移的阶码范围(1-254)

    1.使用128为偏移量浮点数绝对值大概范围:

    5.9*10(-39)~1.7*10(+38)

    1.使用127为偏移量浮点数绝对值大概范围:

    1.2*10(-38)~3.4*10(+38)

    取127更加对称。

    阶码范围:[-126-127]共254个,这里的0不是阶码全0,而还是要加上偏移量。

    特殊值

    1.偏移阶码为0,尾数为0:+0和-0

    2.偏移阶码为1,尾数为0:+∞和-∞

    3.偏移阶码为0,尾数非0:非规范化数(处理0和更小的数值)

    4.偏移阶码为1,尾数非0:NAN

    5.偏移阶码为12^M-1,尾数[12):规范数

    阶码为0时,阶码的真值不再是0-127=-127,而是IEEE754规定的-126,阶码全为0的非规格化数的隐藏位是“ 0 ”,则有最小的规格化数1.02^-126比所有的非规格化数大。
    非规格化只能0.0000001
    2^-126

    展开全文
  • 计算机程序中的浮点数分为单精度浮点数和双精度浮点数。单精度和双精度精确的范围不一样。计算机里的最基本的存储单位用位(bit)来表示。bit只能用来存储0或1。稍大一点的单位是字节(Byte,简写为B)。再大一级的是千...

    上节课 简单介绍了浮点数。计算机程序中的浮点数分为单精度浮点数和双精度浮点数。

    单精度和双精度精确的范围不一样。

    计算机里的最基本的存储单位用位(bit)来表示。bit只能用来存储0或1。

    稍大一点的单位是字节(Byte,简写为B)。

    再大一级的是千字节(kilo Bytes),用k来表示。

    再大一级的单位是兆字节(Mega Bytes),用M来表示。一张照片的大小通常为1~3M。

    再大一级的单位为G。一部高清电影的大小通常为1~2G。

    再大一级的单位为T。

    换算关系为:

    1B = 8bit

    1k = 1024B = 2^10 B

    1M = 1024k = 2^20 B

    1G = 1024M = 2^30 B

    1T = 1024G = 2^40 B

    单精度(float)在计算机中存储占用4字节,32位,有效位数为7位(6位小数+小数点)。

    双精度(double)在计算机中存储占用8字节,64位,有效位数为16位(15位小数+小数点)。

    不管是float还是double,在计算机中的存储都遵循IEEE规范,使用二进制科学计数法,都包含三个部分:符号位、指数位和尾数部分。其中float的符号位、指数位(即整数部分)、尾数部分分别为1, 8, 23。双精度则分别为1, 11, 52。

    float

    double

    精度主要取决于尾数部分的位数,float为23位,最小为2的-23次方,约等于1.19乘以10的-7次方,所以float小数部分只能精确到后面6位,加上小数点算做一位,即有效数字为7位。

    类似,double 尾数部分52位,最小为2的-52次方,约为2.22乘以10的-16次方,所以精确到小数点后15位,有效位数为16位。

    程序验证:

    #include

    int main()

    {

    float a = 1.123456789;

    printf("a = %20.9f\n", a);

    double b = 2.123456789;

    printf("b = %20.9f\n", b);

    return 0;

    }

    注意:这里%20.9f表示浮点数总共有20位,其中小数占9位。不足20位的部分,左侧用空格来填充。

    运行结果:

    a = 1.123456836

    b = 2.123456789

    从运行结果可以看出,单精度浮点数小数部分只有前6位是准确的,后三位是不准确的。双精度小数部分9位都是准确的。

    展开全文
  • 本文就带各位温顾温顾java浮点型、单精度浮点数、双精度浮点数。浮点型首先明确java中浮点型数据类型主要有:单精度float、双精度double至于浮点型就是跟int ,string类型差不多。都是数据类型。浮点型浮点型别给我...

    作为一名java学习者,怎能不懂这些java基础中的基础呢?本文就带各位温顾温顾java浮点型、单精度浮点数、双精度浮点数。

    30f6733ee811fcf550af0502f164f63e.png

    浮点型首先明确java中浮点型数据类型主要有:单精度float、双精度double

    至于浮点型就是跟int ,string类型差不多。都是数据类型。

    浮点型浮点型别给我整些花里胡哨的定义,浮点型简单来说就是表示带有小数的数据,而恰恰小数点可以在相应的二进制的不同位置浮动,可能是这样就被定义成浮点型了。~不得不佩服这文化程度,定义个数据名称都这么有深度~

    浮点型常量 Java的实常数有两种表示形式:1、 十进制数形式:由数字和小数点组成,且必须有小数点,如0.123 , 123.0

    2、科学计数法形式:如:123e3或123E3,其中e或E之前必须有数字,且e或E后面的指数必须为整数(当然也包括负整数)。

    科学计数法中的E

    了解浮点型常量 Java的实常数有两种表示形式之后,很有必要给各位科普科普下科学计数法中E的面貌了~E是指数的意思,E代表的英文是exponent,E表示10的多少次方的意思。

    比如7.823E5 = 782300 这里E5表示10的5次方,再比如54.3E-2 = 0.543这里E-2表示10的-2次方

    再补充一点(针对负次方理解)一个数的负几次方就是这个数的几次方的倒数。

    比如: 2的负1次方=2的1次方分之一=1/2

    比如: 3的负2次方=3的2次方分之一=1/9

    单精度浮点数(float)单精度浮点数在机内占4个字节、有效数字8位、表示范围:-3.40E+38 ~ +3.40E+38

    在Java语言当中,所有的浮点型字面值 ~【V8提示】浮点型简单来说就是表示带有小数的数据~ 默认当做double类型来处理,要想该字面值当做float类型来处理,需要在字面值后面添加F/f,或者强制装换为float。具体如下代码:public static void main(String[] args) {

    //3.10是浮点型,浮点型字面值默认当做double类型来处理,直接编译通过;

    double d=3.10;

    //3.10是浮点型,则必须加 F或者f,若没加,直接编译不通过,会报错“损失精度”

    float f=3.10; //编译出错会报错“损失精度”

    // 解决办法:

    // 第一种方式:强制类型转换

    float f1=(float)5.1;

    // 第二种方式:没有类型转换;

    folat f2=5.1f;

    }

    再来看看下面的测试,结果肯定十之八九会在意料之外,哈哈~public static void main(String[] args) {

    float a = 12345678.90123456789f;

    double b=0.12345678901234567890;

    float c=0.12345678901234567890f;

    System.out.println(a);

    System.out.println(b);

    System.out.println(c);

    打印结果

    a = 1.2345679E7

    b = 0.12345678901234568

    c = 0.12345679

    }

    双精度浮点数(double)双精度浮点数在机内占8个字节、有效数字16位、表示范围:-1.79E+308 ~ +1.79E+308

    double的精度太低,不适合用于做财务软件,财务涉及到钱的问题,要求精度较高,所以在java中有一个基础的类库名为:java.math.BigDecimal,但这个BigDecimal类型是引用类型不是基础类型,切记!!!

    在讲单精度浮点数(float)的时候,差不多顺道把double之间的区别讲了哈哈,所以最后给张很经典的图片“敷衍敷衍”下,哈哈哈 ~哎哎哎..别打...别打...别打脸QAQ~

    1295eb5af6c3e237a4589e8b63b02422.png

    本文来自 java入门 栏目,欢迎学习!

    展开全文
  • 本文就带各位温顾温顾java浮点型、单精度浮点数、双精度浮点数。浮点型首先明确java中浮点型数据类型主要有:单精度float、双精度double至于浮点型就是跟int ,string类型差不多。都是数据类型。浮点型浮点型别给我...

    前言

    作为一名java学习者,怎能不懂这些java基础中的基础呢?本文就带各位温顾温顾java浮点型、单精度浮点数、双精度浮点数。

    浮点型

    首先明确java中浮点型数据类型主要有:单精度float、双精度double

    至于浮点型就是跟int ,string类型差不多。都是数据类型。

    浮点型浮点型别给我整些花里胡哨的定义,浮点型简单来说就是表示带有小数的数据,而恰恰小数点可以在相应的二进制的不同位置浮动,可能是这样就被定义成浮点型了。不得不佩服这文化程度,定义个数据名称都这么有深度

    浮点型常量 Java的实常数有两种表示形式:

    1、 十进制数形式:由数字和小数点组成,且必须有小数点,如0.123 , 123.0

    2、科学计数法形式:如:123e3或123E3,其中e或E之前必须有数字,且e或E后面的指数必须为整数(当然也包括负整数)。

    科学计数法中的E

    了解浮点型常量 Java的实常数有两种表示形式之后,很有必要给各位科普科普下科学计数法中E的面貌了~

    E是指数的意思,E代表的英文是exponent,E表示10的多少次方的意思。

    比如7.823E5 = 782300 这里E5表示10的5次方,再比如54.3E-2 = 0.543这里E-2表示10的-2次方

    再补充一点(针对负次方理解)

    一个数的负几次方就是这个数的几次方的倒数。

    比如: 2的负1次方=2的1次方分之一=1/2

    比如: 3的负2次方=3的2次方分之一=1/9

    单精度浮点数(float)

    单精度浮点数在机内占4个字节、有效数字8位、表示范围:-3.40E+38 ~ +3.40E+38

    在Java语言当中,所有的浮点型字面值 【V8提示】浮点型简单来说就是表示带有小数的数据 默认当做double类型来处理,要想该字面值当做float类型来处理,需要在字面值后面添加F/f,或者强制装换为float。具体如下代码:

    public static void main(String[] args) {

    //3.10是浮点型,浮点型字面值默认当做double类型来处理,直接编译通过;

    double d=3.10;

    //3.10是浮点型,则必须加 F或者f,若没加,直接编译不通过,会报错“损失精度”

    float f=3.10; //编译出错会报错“损失精度”

    // 解决办法:

    // 第一种方式:强制类型转换

    float f1=(float)5.1;

    // 第二种方式:没有类型转换;

    folat f2=5.1f;

    }

    再来看看下面的测试,结果肯定十之八九会在意料之外,哈哈~

    public static void main(String[] args) {

    float a = 12345678.90123456789f;

    double b=0.12345678901234567890;

    float c=0.12345678901234567890f;

    System.out.println(a);

    System.out.println(b);

    System.out.println(c);

    打印结果

    a = 1.2345679E7

    b = 0.12345678901234568

    c = 0.12345679

    }

    双精度浮点数(double)

    双精度浮点数在机内占8个字节、有效数字16位、表示范围:-1.79E+308 ~ +1.79E+308

    double的精度太低,不适合用于做财务软件,财务涉及到钱的问题,要求精度较高,所以在java中有一个基础的类库名为:java.math.BigDecimal,但这个BigDecimal类型是引用类型不是基础类型,切记!!!

    在讲单精度浮点数(float)的时候,差不多顺道把double之间的区别讲了哈哈,所以最后给张很经典的图片“敷衍敷衍”下,哈哈哈 哎哎哎..别打...别打...别打脸QAQ

    ea4ee312a600fda2b710a1c2ee56260f.png

    想深入了解浮点数在计算机中存储方式可以参考这篇文章

    浮点数在计算机中存储方式

    展开全文
  • 单精度浮点数与双精度浮点数区别

    千次阅读 2020-04-06 15:14:35
    单精度浮点数与双精度浮点数区别 1、所占的内存不同 单精度浮点数占用4个字节(32位)存储空间来存储一个浮点数,包括符号位1位,阶码8位,尾数23位。 而双精度浮点数使用 8个字节(64位)存储空间来存储一个浮点数...
  • 在C语言中,单精度浮点数(float)和双精度浮点数(double)类型都是用来储存实数的,双精度是用记忆较多,有效数字较多,数值范围较大。
  • 单精度浮点数转十进制办法一、单精度浮点数契合IEEE754规范,32位,前面榜首位是符号位,接下来的8位是指数,终究23位是尾数。编程中了解这些就够了,改换办法如下:二、VB中改换示例:'VB浮点数改换程序Option ...
  • 本代码将双精度浮点数转换为单精度浮点数,适合浮点数为正值的转换。 使用后将占用VD2810~VD2970字节,欢迎交流。 本代码的完成经历了一段时间的刻苦研究,无偿提供给真正需要的人,希望同行少走弯路。 代码允许复制...
  • 本文就带各位温顾温顾java浮点型、单精度浮点数、双精度浮点数。浮点型首先明确java中浮点型数据类型主要有:单精度float、双精度double至于浮点型就是跟int ,string类型差不多。都是数据类型。浮点型浮点型别给我...
  • 单精度浮点数,双精度浮点数,浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。
  • 单精度浮点数(float)与双精度浮点数(double)的区别 单精度浮点数(float)与双精度浮点数(double)的区别如下: (1)在内存中占有的字节数不同 •单精度浮点数在机内占4个字节 •双精度浮点数在机内占8个字节 ...
  • 单精度浮点数和双精度浮点数Here you will learn about difference between float and double i.e. float vs double. 在这里,您将了解float和double的区别,即float vs double。 These are two commonly used ...
  • 单精度浮点数在机内占4个字节 双精度浮点数在机内占8个字节 (2)有效数字位数不同 单精度浮点数有效数字8位 双精度浮点数有效数字16位 (3)所能表示数的范围不同 单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38 双...
  • 单精度浮点数与双精度浮点数

    千次阅读 2012-03-28 07:04:56
    (1) 单精度浮点数(Single)  用来表示带有小数部分的实数,一般用于科学计算。  占用4个字节(32位)存储空间,包括符号位1位,阶码8位,尾数23位。其数值范围为3.4E-38~3.4E+38,单精度浮点数最多有7位十进制...
  • 单精度浮点数和双精度浮点数

    千次阅读 2011-03-10 11:06:00
    根据IEEE754国际标准,常用的浮点数有两种格式 (1) 单精度浮点数(Single)(2)双精度浮点数(double)单精度浮点数 用来表示带有小数部分的实数,一般用于科学计算。 占用4个字节(32位)存储空间,包括符号位1位,阶码...
  • (1)在内存中占有的字节数不同单精度浮点数在机内占4个字节双精度浮点数在机内占8个字节(2)有效数字位数不同单精度浮点数有效数字8位双精度浮点数有效数字16位(3)所能表示数的范围不同单精度浮点的表示范围:-...
  • 本文就带各位温顾温顾java浮点型、单精度浮点数、双精度浮点数。 浮点型 浮点型浮点型别给我整些花里胡哨的定义,浮点型简单来说就是表示带有小数的数据,而恰恰小数点可以在相应的二进制的不同位置浮动,可能是...
  • 本文就带各位温顾温顾java浮点型、单精度浮点数、双精度浮点数。浮点型首先明确java中浮点型数据类型主要有:单精度float、双精度double至于浮点型就是跟int ,string类型差不多。都是数据类型。浮点型浮点型别给我...
  • 输入一个字符,一个数字,一个单精度浮点数,一个双精度浮点数,按顺序输出它们四个 且数字指定占4个字符宽靠右对齐,单精度浮点数保留2位小数,双精度保留12位小数,占一行输出、空格分隔 #include<stdio.h> ...
  • 本节书摘来自华章出版社《Core Data...2.6 单精度浮点数与双精度浮点数 对于属性来说,单精度浮点数(float)和双精度浮点数(double)这两种数据类型可以看作带小数点的非整数。它们都可以用来表示实数,但也都有...
  • 计算机程序中的浮点数分为单精度浮点数和双精度浮点数。 单精度和双精度精确的范围不一样。 计算机里的最基本的存储单位用位(bit)来表示。bit只能用来存储0或1。 稍大一点的单位是字节(Byte,简写为B)。 再大一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,285
精华内容 1,314
关键字:

单精度浮点数