精华内容
下载资源
问答
  • 今天小编就为大家分享一篇关于易语言将其它类型的数据转换为双精度小数型,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • 请问 arcgis10.4.1中 双精度型无法设置精度和小数位数是什么原因啊?我添加字段时填写了精度 15和小数位数 4 但是生成的字段 两者都是0。
  • C语言学习 单精度、双精度各有几位小数? 单精度有6位小数双精度有15位小数。 单精度数(float)在32位计算机中存储占用4字节,也就是32位,有效位数为7位,小数点后6位。 双精度数(double)在32位计算机中...

    单精度有6位小数,双精度有15位小数。
    单精度数(float型)在32位计算机中存储占用4字节,也就是32位,有效位数为7位,小数点后6位。
    双精度数(double型)在32位计算机中存储占用8字节,也就是64位,有效位数为16位,小数点后15位。

    扩展资料:
    单精度浮点数格式是一种计算机数据格式,在计算机存储器中占用4个位元(32 bits),利用“浮点”(浮动小数点)的方法,可以表示一个范围很大的数值。

    C、C++中使用到的双精度浮点数(double)类型是在IEEE二进制浮点数算术标准(ANSI/IEEE Std 754-1985)中定义的。双精度浮点数(Double)用来表示带有小数部分的实数,一般用于计算机变成中定义变量,占用8个字节存储空间。
    参考资料来源:百度百科-单精度浮点数
    参考资料来源:百度百科-精度浮点数

    展开全文
  • C语言如何输出双精度浮点数据

    千次阅读 2019-01-01 17:09:00
    1、双精度浮点数据用%lf输出。因为double是8个字节的,float是4个字节的,%f 的格式就是4个字节的,而 %lf 就是8个字节的。 例如:printf("%lf\n",x); 转载于:...

    1、双精度浮点型数据用%lf输出。因为double是8个字节的,float是4个字节的,%f 的格式就是4个字节的,而 %lf 就是8个字节的。  例如:printf("%lf\n",x);

    转载于:https://www.cnblogs.com/lijianmin6/p/10205243.html

    展开全文
  • 首先,float单精度浮点,计算机会分配4字节,32位来进行存储,而double float双精度浮点,计算机则会分配8个字节,即64位来进行小数的存储,这是后面进行详细解释的必备知识。 其次,计算机在存储浮点数据时,...

    1问题的提出

    最近在学习过程中,遇到了题目中出现的陈述,但是对于原因没有头绪,同时在互联网上很难找的到合理的我想要的解释,因此我搜罗了一些前人的知识,结合自己的理解,总结一下。

    2问题的解释

    首先,float单精度浮点型,计算机会分配4字节,32位来进行存储,而double float双精度浮点型,计算机则会分配8个字节,即64位来进行小数的存储,这是后面进行详细解释的必备知识。
    其次,计算机在存储浮点型数据时,会将浮点型数据分为3个部分来进行存储(至于为什么,规定),分别为:
    (1)符号位(这个熟悉整型的二进制存储应该知道的,首尾二进制0表示正数,1表示负数,不多说,占一个字节);
    (2)指数部分(计算机使用浮点型存储时,会将源数据转换为科学计数法来存储,例如,8.25,转化为二进制为1000.01,然后转化为科学计数法,注意是2进制,将底数10换为2为,1.00001 × 2的3次方,指数为3,这个指数部分的数据就是存储着源10进制数据转换为2进制时科学计数法表示的指数相关,这里说的是相关,并不是存储着3,多说一句,这个指数部分的首位二进制表示着指数的正负,换句话说,1表示源十进制数的绝对值大于等于1,0表示小于1,更多了解,自行见文尾参考链接
    (3)尾部存储的是二进制科学计数法的所精确的小数数值(二进制存储),例如1.00001 × 2的3次方的00001,超出存储位数‘四舍五入’,不足位数补向左补0.
    具体float和double float见下图:
    float类型:
    在这里插入图片描述
    double float类型
    在这里插入图片描述
    至于其中的指数部分为什么是8和11,没法解释,这么设计的。
    即,符号位都是表示源十进制数据的正负,指数部分的首位都是0或1表示二进制科学计数法的指数正负,其余位数存储着和指数相关的值,最后尾数部分存储着二进制科学计数法的小数部分数值。
    因此,尾数部分决定着精确的实际能够存储的十进制数据位数精度:
    (1)单精度:23位能存储的数据量为2的(23+1)次幂为16777216,结果取10常用对数发现,在7和8之间,因此,精度最大不要超过7位小数,常常称为不要超过6位
    (2)双精度:相应地,对于双精度的64位存储,去掉首尾符号位1字节和指数部分的11字节,尾数的52字节能存储最大数据量为2的(52+1)次幂为9007199254740992,同样发现,最大的十进制小数位位数16~17之间,因此最好不要超过15位

    最后

    不知道大家有没有理解,下面是我发现写的非常好的文章,有更深度需求的同学可以参考。
    参考链接:https://www.cnblogs.com/Reverse-xiaoyu/p/11618913.html

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

    千次阅读 2014-09-16 20:41:53
     为作为浮点数的小数表示,单精度浮点数 float  由符号位 1  位, 指数域位 k   =8  位,小数域位 (   尾数   )n=23  位构成,因此对上面得到的 21  位小数位我们还需要补上 2  个 0  ,得到浮点数的小...
      目前
    C/C++
     编译器标准都遵照
    IEEE
     制定的浮点数表示法来进行
    float,double
     运算。这种结构是一种科学计数法,用符号、指数和尾数来表示,底数定为
    2,
    即把一个浮点数表示为尾数乘以
    2
     的指数次方再添上符号。下面是具体的规格:
    
                 
    符号位     阶码      尾数     长度  
    float           1          8        23      32

    double          1         11        52      64

    以下通过几个例子讲解浮点数如何转换为二进制数

    例一:

    已知:double 类型38414.4 。

    求:其对应的二进制表示。

    分析:double 类型共计64 位,折合8 字节。由最高到最低位分别是第63 、62 、61 、…… 、0 位:
        
     最高位63 位是符号位,1 表示该数为负,0 表示该数为正;
        62-52
     位,一共11 位是指数位;
        51-0
     位,一共52 位是尾数位。

         
    步骤:按照IEEE 浮点数表示法,下面先把38414.4 转换为十六进制数。
         
     把整数部和小数部分开处理: 整数部直接化十六进制:960E 。小数的处理:
    0.4=0.5*0+0.25*1+0.125*1+0.0625*0+……
         
    实际上这永远算不完!这就是著名的浮点数精度问题。所以直到加上前面的整数部分算够53 位就行了。隐藏位技术:最高位的1 不写入内存(最终保留下来的还是52 位)。
        
     如果你够耐心,手工算到53 位那么因该是:38414.4(10)=1001011000001110.0110101010101010101010101010101010101(2)

    科学记数法为:1.0010110000011100110101010101010101010101010101010101 ,右移了15 位,所以指数为15 。或者可以如下理解:

    1.00101100000111001101010101010101010101010101010101012 ×215
         
    于是来看阶码,按IEEE 标准一共11 位,可以表示范围是-1024 ~ 1023 。因为指数可以为负,为了便于计算,规定都先加上1023(2^10-1) ,在这里,阶码:15+1023=1038 。二进制表示为:100 00001110 ;
        
     符号位:因为38414.4 为正对应  为0 ;
        
     合在一起(注:尾数二进制最高位的1 不要 ):
    0100 0000 1110 0010 1100 0001 1100 1101 0101 0101 0101 0101 0101 0101 0101 0101

    例二:

    已知:整数3490593(16 进制表示为0x354321 ) 。

    求:其对应的浮点数3490593.0 的二进制表示。  

    解法如下:

    先求出整数3490593 的二进制表示:

     H:    3     5    4    3    2     1   (十六进制表示)

     B:   001 1  0101 0100 0011 0010  0001 (二进制表示)

             │←──────21 ─────→│

     

    即: 

                   1.1010101000011001000012 × 221

    可见,从左算起第一个1 后 21 位,我们将这21 为作为浮点数的小数表示,单精度浮点数float 由符号位1 位,指数域位k =8 位,小数域位( 尾数 )n=23 位构成,因此对上面得到的21 位小数位我们还需要补上2 个0 ,得到浮点数的小数域表示为:

             1 0101 0100 0011 0010 0001 00

     

    float 类型的 偏置量 Bias=2k-1 -1=28-1 -1=127 ,但还要补上刚才因为右移作为小数部分的 21 位,因此偏置量为 127+12=148 ,就是 IEEE 浮点数表示标准:

                              V = (-1)s × M × 2E

                        E = e-Bias

    中的 e ,此前计算 Bias=127 ,刚好验证了 E=148-127=21 

     

     148 转为二进制表示为 10010100 ,加上符号位 0 ,最后得到二进制浮点数表示 1001010010101010000110010000100 ,其 16 进制表示为:

     H:     4        A       5          5         0         C         8        4  

     B:  0 100   1010   0 101    0101   0000   1100  1000   0100

                        |←────      21        ─────→   |

         1|←─8   ─→||←─────       23       ─────→ |

     

    这就是浮点数 3490593.0(0x4A550C84) 的二进制表示。

    例三:

    0.5 的二进制形式是0.1

    它用浮点数的形式写出来是如下格式

     

    0                01111110                 00000000000000000000000


    符号位           阶码                       小数位

    正数符号位为0 ,负数符号位为1

    阶码是以2 为底的指数

    小数位表示小数点后面的数字


    下面我们来分析一下0.5 是如何写成0 01111110 0000000 00000000 00000000


    首先0.5 是正数所以符号位为0

    再来看阶码部分,0.5 的二进制数是0.1, 而0.1 要表示为1.0*2^(-1) ,科学表示时整数部分不能为0 所以我们总结出来:

    要把二进制数变成(1.f)*2^(exponent) 的形式, 其中exponent 是指数

    而由于阶码有正负之分所以阶码=127+exponent;

    即阶码=127+(-1)=126  01111110

    余下的小数位为二进制小数点后面的数字, 即00000000000000000000000


    由以上分析得0.5 的浮点数存储形式为0 01111110 00000000000000000000000  

    注:如果只有小数部分, 那么需要右移小数点比如右移3 位才能放到第一个1 的后面阶码就是127-3=124.

    例四   20.59375 )10 = (10100.10011 2

    首先分别将整数和分数部分转换成二进制数: 

    20.59375
     =10100.10011 

    然后移动小数点,使其在第1 ,2 位之间 

    10100.10011
     =1.010010011×2^4   e =

    于是得到: 

    S
     =0 , E =4 +127 =131 , M =010010011 

    最后得到32 位浮点数的二进制存储格式为: 

    0100 0001 1010 0100 1100 0000 0000 0000 
    (41A4C000)16


    例五:
    -12.5   转为单精度二进制表示
    12.5: 
    1. 
    整数部分12 ,二进制为1100; 小数部分0.5, 二进制是.1 ,先把他们连起来,从第一个1 数起取24 位(后面补0 ): 
    1100.1 000 00000000 00000000 
    这部分是有效数字。(把小数点前后两部分连起来再取掉头前的1 ,就是尾数) 
    2. 
    把小数点移到第一个1 的后面,需要左移3 位(1.1001 000 00000000 00000000*2^3 加上偏移量127 :127+3=130 ,二进制是10000010 ,这是阶码。 
    3. -12.5
     是负数,所以符号位是1 。把符号位,阶码和尾数连起来。注意,尾数的第一位总是1 ,所以规定不存这一位的1 ,只取后23 位: 
    1 10000010 10010000000000000000000 
    把这32 位按8 位一节整理一下,得: 
    11000001 01001000 00000000 00000000 
    就是十六进制的 C1480000

    例六:

    2.025675 
    1. 
    整数部分2 ,二进制为10; 小数部分0.025675, 二进制是.0000 01101001 00101010 01 ,先把他们连起来,从第一个1 数起取24 位(后面补0): 
    10.0000011010010010101001 
    这部分是有效数字。把小数点前后两部分连起来再取掉头前的1 ,就是尾数: 00000011010010010101001 
    2. 
    把小数点移到第一个1 的后面,左移了1 位加上偏移量127 :127+1=128 ,二进制是10000000 ,这是阶码。 
    3. 2.025675
     是正数,所以符号位是0 。把符号位,阶码和尾数连起来: 
    0 10000000 00000011010010010101001 
    把这32 位按8 位一节整理一下,得: 
    01000000 00000001 10100100 10101001 
    就是十六进制的 4001A4A9.  

    例七: 
    (
     逆向求十进制整数) 一个浮点二进制数手工转换成十进制数的例子: 
    假设浮点二进制数是 1011 1101 0100 0000 0000 0000 0000 0000 
    1 ,8 ,23 位分成三段: 
    01111010 10000000000000000000000 
    最后一段是尾数。前面加上"1.", 就是 1.10000000000000000000000 
    下面确定小数点位置。由
     E = e-Bias  阶码E 是01111010 ,加上00000101 才是01111111 (127 ), 
    所以他减去127 的偏移量得e=-5 。(或者化成十进制得122 ,122-127=-5 )。 
    因此尾数1.10 (后面的0 不写了)是小数点右移5 位的结果。要复原它就要左移5 位小数点,得0.0000110, 即十进制的0.046875 
    最后是符号:1 代表负数,所以最后的结果是 -0.046875 

    注意: 其他机器的浮点数表示方法可能与此不同不能任意移植 。

     

    再看一例( 类似例七) :

    比如:53004d3e

    二进制表示为:

    01010011000000000100110100111110

    按照1 个符号    8 个指数          23 个小数位划分

    0              10100110         00000000100110100111110

    正确的结果转出来应该是551051722752.0

    该怎么算?

    好,我们根据IEEE 的浮点数表示规则划分,得到这个浮点数的小数位是:

      000 000001001101 00111110 

    那么它的二进制表示就应该是:

    1.000000001001101001111102 × 239 
    标准化公式中的M 要求在规格化的情况下,取值范围 1<M<(2- ε)

    正因为如此,我们才需要对原始的整数二进制表示做偏移,偏移多少呢?偏移 2E  
    这个“E” 怎么算?上面的 239 怎么得来的呢? 浮点数表示中的8 位指数为就是告诉这个的。我们知道: 
    E = e-Bias 
    那么根据指数位:

    101001102 => 16610 
    e=166 ,由此算出E=e-Bias=166-127=39 ,就是说将整数二进制表示转为标准的浮点数二进制表示的时候需要将小数点左移39 位,好,我们现在把它还原得到整数的二进制表示:

    1 00000000100110100111110 0000000000000000

    1 │←───── 23 ─────→│←─── 16 ───→│

    23+16=39
     ,后面接着就是小数点了。
    拿出计算器,输入二进制数1000000001001101001111100000000000000000
    转为十进制数,不正是:551051722752 么!



    展开全文
  •      C语言和C#语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用32bit,double数据占用64bit。单精度类型和双精度类型在计算机存储格式如下所示: 图1 浮点类型的...
  • C语言 单精度和双精度实数输出

    千次阅读 2019-02-04 10:50:26
    C语言 单精度和双精度实数输出 有意义数字和无意义数字的演示
  • 今天协助客户测试的时候发现这么一个问题arcgis gdb库新建浮点字段不能设置精度小数位数, 这是在gdb中新建字段 我们可以在字段属性中进行设置 但是这种也只是相当于设置值在字段的显示效果,并不会保存...
  • 在C/C++中float是32位的,double是64位的,两者在内存中的存储方式和能够表示的精度均不同,目前C/C++编译器标准都遵照IEEE制定的浮点数表示法来进行float,double运算。 无论是float还是double,在内存中的存储...
  • 对于十进制的整数使用二进制表示很简单,但是对于十进制小数如何使用二进制进行存储?十进制的小数又何如使用二进制小数表示?此文章描述了如何将十进制小数转换为二进制小数以及浮点数再内存中时如何进行存储。 二...
  • 单精度和双精度问题

    千次阅读 2020-08-24 10:46:54
    一,什么是单精度和双精度 单精度数(float)是指计算机表达实数近似值的一种方式。VB中Single(单精度浮点)变量存储为 IEEE 32 位(4 个字节)浮点数值的形式,它的范围在负数的时候是从 -3.402823E38 到 -1....
  • 双精度浮点数(double)       Decimal为SQL Server、MySql等数据库的一种数据类型,不属于浮点数类型,可以在定义时划定整数部分以及小数部分的位数。使用精确小数类型不仅能够保证数据计算更为精确,还可以节省...
  • 本文就带各位温顾温顾java浮点、单精度浮点数、双精度浮点数。 浮点 浮点浮点别给我整些花里胡哨的定义,浮点简单来说就是表示带有小数的数据,而恰恰小数点可以在相应的二进制的不同位置浮动,可能是...
  • 1》原因 因为计算机内部的信息都是由二进制...小数部分:乘2取整数部分,若小数不为0则继续乘2,知道小数部分为0将取出的整数位正序排序(若小数部分无法为0,根据有效位要求取得相应值) 0.1的二进制:0.0 0011...
  • 单精度float与双精度double

    千次阅读 2020-01-31 17:07:01
    单精度 双精度: 单精度,也即float,一般在计算机中存储占用4字节,也32位,有效位数为7位;双精度(double)在计算机中存储占用8...双精度格式:1位符号,11位指数,52位小数。 float是单精度浮点数(32位)...
  • Java将双精度转换为字符串 (Java Convert Double to String) Let’s look at different code snippets for java double to string conversion. Note that double is a primitive data type whereas Double is an ...
  • 单精度在一些处理器上比双精度更快而且只占用双精度一半的空间,但是当值很大或很小的时候,它将变得不精确。当你需要小数部分并且对精度的要求不高时,单精度浮点的变量是有用的。例如,当表示美元和分时,单精度...
  • 单精度浮点数和双精度浮点数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 ...
  • 今天在看C#的基础部分,发现浮点型和小数型很相似,想区别下。 1.两者的精度不同 浮点型常量又分为单精度浮点型常量和双精度浮点型常量。单精度浮点型常量常在末尾添加f或F,双精度浮点型常量则是添加d或D。 ...
  • 使用单、双精度变量输出 强制以小数显示 控制显示精度 设置显示宽度 #include<iostream> #include <cmath> #include <iomanip> //控制头文件 using namespace std; int main() { cout <<...
  • 首先,大家都知道,小数类型的数据默认是Double类型,也就是说1.0是双精度型。而计算机底层是以二进制的原理存储数据,包括运算数据。减法在计算机中也是加法的过程。所以当我们将0.66转换成二进制时是除不尽的,...
  • 单精度(float) & 双精度 (double) 区别

    千次阅读 多人点赞 2020-07-08 17:00:59
    含义:表明单精度和双精度精确的范围不一样,单精度,也即float,一般在计算机中存储占用4字节,也32位,有效位数为7位;双精度(double)在计算机中存储占用8字节,64位,有效位数为16位。 原因:不管float还是...
  • C++保留小数精度

    万次阅读 2018-07-12 15:26:37
    在C++的编程中,总会遇到浮点数的处理,有的时候,我们只需要保留2位小数作为输出的结果,这时候,问题来了,怎样才能让cout输出指定的小数点后保留位数呢?在C语言的编程中,我们可以这样实现它:printf("%.2f...
  • (c语言)单、双精度

    千次阅读 2020-03-25 21:20:28
    双精度型 1.用符号double表示 2.分配8个字符 3.数值范围1.7E-308~1.7+308,可提供16个有效数字 4.后缀为lf或LF表示双精度浮点(若无后缀则默认为double) 单双精度浮点之间的赋值 1.将float类型的变量赋...
  • 8字节16进制转双精度浮点数 前言 一、JS处理32位整型位运算? 示例:在JS中无论是整数还是小数都是按照64位的浮点数形式存储,而整数运算会自动转化为32位有符号整数。 有符号整数使用 31 位表示整数的数值,用第...
  • 浮点数(实数)中单精度与双精度区别

    千次阅读 2018-11-26 20:39:09
    ##double双精度:1位信号(0为正1为负),11位为指数,最后23位为小数部分 从存储的不同可以看出单精度在长度上已经小双精度一倍,当对数据类型的精度要求不高(±3X2(38))时用单精度就可以,当对数据需要多次...
  • double:占用8字节存储空间,可称为“双精度浮点数”,约17位有效数字。 定点小数 浮点小数是“精确的小数”一一它通过内部技巧,突破了“有些小数无法用二进制精确表示”的局限。 其设定方式通常是这样的: ...
  • double,printf()用%f输出,而scanf用%lf来接受输入。   格式 printf scanf %c int char * %d, %i int int * %o, %u, %x ...
  • * 十六进制单精度浮点数,转BigDecimal,保留2为小数,截掉多余小数位 * @param hex * @return */ public static BigDecimal hexFloat2BigDecimal(String hex) { float value = Float.intBitsToFloat((int)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,391
精华内容 13,356
关键字:

双精度小数型