精华内容
下载资源
问答
  • matlab中int32,int64,single和double区别

    千次阅读 2020-10-24 15:33:37
    int32和single类型数据都是32bit。int32不仅定义了数据位宽,还定义数据是整型。 int64和double类型数据都是64bit。

    int32和single类型的数据都是32bit。int32不仅定义了数据的位宽,还定义的数据是整型。

    int64和double类型的数据都是64bit。

    展开全文
  • Single,Double,Extended区别

    千次阅读 2013-10-11 11:48:02
    实数类型代表不同格式浮点数。Single类型占字节数最小,为4个...这些不同精度浮点数据类型都与IEEE( 电气电子工程师协会)标准浮点数表示法一致,并且 CPU数字协处理器直接支持这些类型,处理速度也最快。
    实数类型代表不同格式的浮点数。Single类型占的字节数最小,为4个字节;其次是Double 浮点类型,占8个字节;Extended 浮点类型,占10个字节。这些不同精度的浮点数据类型都与IEEE( 电气和电子工程师协会)标准的浮点数表示法一致,并且 CPU数字协处理器直接支持这些类型,处理速度也最快。
    
    展开全文
  • decimal,float和double的区别

    千次阅读 2018-07-10 11:30:15
    decimal,float和double的区别一直很奇怪C#的预定义数据类型中为什么加了一个decimal,有float和double不就够了吗?今天来挖一挖。浮点型 NameCTS TypeDe script ionSignificant FiguresRange (approximate)...

    decimal,float和double的区别

    一直很奇怪C#的预定义数据类型中为什么加了一个decimal,有float和double不就够了吗?今天来挖一挖。

    浮点型

     

    Name

    CTS Type

    De script ion

    Significant Figures

    Range (approximate)

    float

    System.Single

    32-bit single-precision floating point

    7

    ±1.5 × 10?45 to ±3.4 × 1038

    double

    System.Double

    64-bit double-precision floating point

    15/16

    ±5.0 × 10 ?324 to ±1.7 × 10308

    如果我们在代码中写一个12.3,编译器会自动认为这个数是个double型。所以如果我们想指定12.3为float类型,那么你必须在数字后面加上F/f:

    float f = 12.3F;

    decimal类型

    作为补充,decimal类型用来表示高精度的浮点数

    Name

    CTS Type

    De script ion

    Significant Figures

    Range (approximate)

    decimal

    System.Decimal

    128-bit high precision decimal notation

    28

    ±1.0 × 10?28 to ±7.9 × 1028

    从上表可以看出,decimal的有效位数很大,达到了28位,但是表示的数据范围却比float和double类型小。decimal类型并不是C#中的基础类型,所以使用的时候会对计算时的性能有影响。

    我们可以像如下的方式定义一个decimal类型的浮点数:

    decimal d = 12.30M;

    对decimal、float、double错误的认识

     

    在精确计算中使用浮点数是非常危险的,尽管C#在浮点数运算时采取了很多措施使得浮点数运算的结果看起来是非常正常的。但实际上如果不清楚浮点数的特性而贸然使用的话,将造成非常严重的隐患。  

       

      考虑下面的语句:  

       

                  double   dd   =   10000000000000000000000d;  

                  dd   +=   1;  

                  Console.WriteLine   (   "{0:G50}",   dd   );   

        

      输出是什么?谁知道?  

      输出是:1000000000000000000000000   

        

      这就是浮点数精度损失的问题,最重要的是,在精度损失的时候,不会报告任何的错误,也不会有任何的异常产生。  

       

      浮点数的精度损失可能在很多地方出现,例如d   *   g   /   g   不一定等于d,d   /   g   *   g也不一定等于d。   

        

      还有两个非常危险的错误认识!!  

       

      1、decimal不是浮点型、decimal不存在精度损失。

      下面有段程序大家可以去看看结果是什么。记住!所有的浮点型变量都存在精度损失的问题,而decimal是一个不折不扣的浮点型,不论它精度有多高,精度损失依然存在!  

       

                      decimal   dd   =   10000000000000000000000000000m;  

                      dd   +=   0.1m;  

                      Console.WriteLine   (   "{0:G50}",   dd   );   

        

      2、decimal所能储存的数比double大,从double到decimal的类型转换不会出现任何问题。

      微软在decimal的帮助上真的要好好反省了。实际上只有从整形到decimal的转换才是扩大转换,decimal的精度比double大,但所能储存的最大数却比double要小。

     

     

     

    “decimal   类型是适合财务和货币计算的   128   位数据类型。”

    当然,decimal在大多数情况下是安全的,但浮点数在理论上是不安全的。

    至于精度误差造成的显示问题,则是很容易修补的。浮点数会带来的问题以及整型能避免的问题就是一个:

    譬如说从A帐户转账到B帐户,经计算得出结果是3.788888888888888元,那么我们从A帐户扣除这么多钱,B帐户增加这么多钱,但事实上A帐户不一定会扣除准确的数值,例如A帐户的金额在100000000000,那么这个时候100000000000   -   3.788888888888888运算结果很有可能是99999999996.211111111111112。而这个时候B帐户的金额为0则很有可能加上准确的数值,如3.788888888888888,这样一来,0.011111111111112元钱就会不见了,日积月累的,差额就会越来越大。

    double是64位的,比single-32位精度高  

      decimal128位高精度浮点数,常用于金融运算,不会出现浮点数计算的误差

    ,decimal   类型具有更高的精度和更小的范围,这使它适合于财务和货币计算。

     

     

     

    早上刚到办公室,就被中试室打来电话叫去,原来软件在测试过程中发现了个小问题:软件读出来的数据比设备LCD上显示数据小了 0.01 。

    怎么会这样呢,数据类型我已经用了 double 型了整个数据长度也就6位,double型的数据有效数据位为7位,也够了阿,不明白。于是回来下断点跟踪。

    前面double型在算的时候,是没问题的,数据是66.24,可是当我把66.24 乘上100后的处理结果就不对了:66.24*100.0d = 6623.9999…91,问题就出在这里了。查了msdn,Double型的数据:Double 值类型表示一个值介于 -1.79769313486232e308 和 +1.79769313486232e308 之间的双精度 64 位数字,浮点数只能近似于十进制数字,浮点数的精度决定了浮点数近似于十进制数字的精确程度。默认情况下,Double 值的精度是 15 个十进制位,但内部维护的最大精度是 17 位。所以就出现了乘上一百后,精度就不够了。又由于我们在处理数据时,是不允许四舍五入的,所以,经过单位转换后,软件中最终显示的数据为 66.23 ,比LCD上显示的66.24 小了 0.01。

    因此,这之后就想到了应该用更高精度的 decimal 型。

    类型

    大致范围

    精度

    .NET Framework 类型

    decimal

    ±1.0 × 10e?28 至 ±7.9 × 10e28

    28 到 29 位有效位

    System.Decimal

    s在声明decimal类型数据时,可以 a: decimal myData = 100,此时编译器隐式转换整型数100为 100.0m;当然也可以b: decimal myData = 100.0m,但是 如果是 decimal myData = 100.0d或者decimal myData = 100.0f,就不行了,因为100.0d或者100.0f,编译器认为是浮点数,而浮点数和decimal 类型之间不存在隐式转换;因此,必须使用强制转换在这两种类型之间进行转换。This is the important,否则编译器便报错。所以一般的财务软件在处理时,都会用decimal 类型。

    好了,改用decimal 型之后,就OK 了,结果就完完整整地显示为 66.24 了。

    展开全文
  • <p>I've read about the difference between double precision and single precision. However, in most cases, <code>float</code> and <code>double</code> seem to be interchangeable, i.e. using one or the ...
  • 一直很奇怪C#预定义数据类型中为什么加了一个decimal,有float和double不就够了吗?今天来挖一挖。 浮点型 Name CTS Type Description Significant Figures Range (approximate) float ...
            一直很奇怪C#的预定义数据类型中为什么加了一个decimal,有float和double不就够了吗?今天来挖一挖。

    浮点型

    Name CTS Type Description Significant Figures Range (approximate)
    float System.Single 32-bit single-precision floating point 7 ±1.5 × 10?45 to ±3.4 × 1038
    double System.Double 64-bit double-precision floating point 15/16 ±5.0 × 10 ?324 to ±1.7 × 10308

    如果我们在代码中写一个12.3,编译器会自动认为这个数是个double型。所以如果我们想指定12.3为float类型,那么你必须在数字后面加上F/f:
    float f = 12.3F;
    decimal类型
    作为补充,decimal类型用来表示高精度的浮点数
    Name CTS Type Description Significant Figures Range (approximate)
    decimal System.Decimal 128-bit high precision decimal notation 28 ±1.0 × 10?28 to ±7.9 × 1028

            从上表可以看出,decimal的有效位数很大,达到了28位,但是表示的数据范围却比float和double类型小。decimal类型并不是C#中的基础类型,所以使用的时候会对计算时的性能有影响。
    我们可以像如下的方式定义一个decimal类型的浮点数:
    decimal d = 12.30M;

    对decimal、float、double错误的认识


            在精确计算中使用浮点数是非常危险的,尽管C#在浮点数运算时采取了很多措施使得浮点数运算的结果看起来是非常正常的。但实际上如果不清楚浮点数的特性而贸然使用的话,将造成非常严重的隐患。
    考虑下面的语句:
      double dd = 10000000000000000000000d;
      dd += 1;

      Console.WriteLine ( "{0:G50}", dd );

            输出是什么?谁知道?

            输出是:1000000000000000000000000


            这就是浮点数精度损失的问题,最重要的是,在精度损失的时候,不会报告任何的错误,也不会有任何的异常产生。

            浮点数的精度损失可能在很多地方出现,例如d * g / g 不一定等于d,d / g * g也不一定等于d。


            还有两个非常危险的错误认识!!
     1、decimal不是浮点型、decimal不存在精度损失。
     下面有段程序大家可以去看看结果是什么。记住!所有的浮点型变量都存在精度损失的问题,而decimal是一个不折不扣的浮点型,不论它精度有多高,精度损失依然存在!
    decimal dd = 10000000000000000000000000000m;
    dd += 0.1m;

    Console.WriteLine ( "{0:G50}", dd );


    2、decimal所能储存的数比double大,从double到decimal的类型转换不会出现任何问题。
    微软在decimal的帮助上真的要好好反省了。实际上只有从整形到decimal的转换才是扩大转换,decimal的精度比double大,但所能储存的最大数却比double要小。
            “decimal 类型是适合财务和货币计算的 128 位数据类型。”
            当然,decimal在大多数情况下是安全的,但浮点数在理论上是不安全的。
            至于精度误差造成的显示问题,则是很容易修补的。浮点数会带来的问题以及整型能避免的问题就是一个:
            譬如说从A帐户转账到B帐户,经计算得出结果是3.788888888888888元,那么我们从A帐户扣除这么多钱,B帐户增加这么多钱,但事实上A帐户不一定会扣除准确的数值,例如A帐户的金额在100000000000,那么这个时候100000000000 - 3.788888888888888运算结果很有可能是99999999996.211111111111112。而这个时候B帐户的金额为0则很有可能加上准确的数值,如3.788888888888888,这样一来,0.011111111111112元钱就会不见了,日积月累的,差额就会越来越大。
            double是64位的,比single-32位精度高
            decimal128位高精度浮点数,常用于金融运算,不会出现浮点数计算的误差
            decimal 类型具有更高的精度和更小的范围,这使它适合于财务和货币计算。

            早上刚到办公室,就被中试室打来电话叫去,原来软件在测试过程中发现了个小问题:软件读出来的数据比设备LCD上显示数据小了 0.01 。
            怎么会这样呢,数据类型我已经用了 double 型了整个数据长度也就6位,double型的数据有效数据位为7位,也够了阿,不明白。于是回来下断点跟踪。
            前面double型在算的时候,是没问题的,数据是66.24,可是当我把66.24 乘上100后的处理结果就不对了:66.24*100.0d = 6623.9999…91,问题就出在这里了。查了msdn,Double型的数据:Double 值类型表示一个值介于 -1.79769313486232e308 和 +1.79769313486232e308 之间的双精度 64 位数字,浮点数只能近似于十进制数字,浮点数的精度决定了浮点数近似于十进制数字的精确程度。默认情况下,Double 值的精度是 15 个十进制位,但内部维护的最大精度是 17 位。所以就出现了乘上一百后,精度就不够了。又由于我们在处理数据时,是不允许四舍五入的,所以,经过单位转换后,软件中最终显示的数据为 66.23 ,比LCD上显示的66.24 小了 0.01。
            因此,这之后就想到了应该用更高精度的 decimal 型。

            在声明decimal类型数据时,可以 a: decimal myData = 100,此时编译器隐式转换整型数100为 100.0m;当然也可以b: decimal myData = 100.0m,但是 如果是 decimal myData = 100.0d或者decimal myData = 100.0f,就不行了,因为100.0d或者100.0f,编译器认为是浮点数,而浮点数和decimal 类型之间不存在隐式转换;因此,必须使用强制转换在这两种类型之间进行转换。This is the important,否则编译器便报错。所以一般的财务软件在处理时,都会用decimal 类型。
    好了,改用decimal 型之后,就OK 了,结果就完完整整地显示为 66.24 了。



    转自http://lj.soft.blog.163.com/blog/static/79402481201032210173381/
    展开全文
  • 一直很奇怪C#预定义数据类型中为什么加了一个decimal,有float和double不就够了吗?今天来挖一挖。 浮点型     Name   CTS Type   Description  ...
  • MySQL float,double,decimal数据类型区别

    千次阅读 2012-04-24 09:44:04
    1. 浮点数 (SINGLEDOUBLE,FLOAT,REAL) 在计算机中是纯数字,即由二进制来表示数字。由于规定了长度,所有是离散形,也就是说无法准确表示定义区间内所有实数。 如果想了解详细,则可以参考自己...
  • rand、randirandn的区别? 1,rand 生成均匀分布的伪随机数。分布在(0~1)之间 主要语法:rand(m,n)生成m行n列的均匀分布的伪随机数  rand(m,n,‘double’)生成指定精度的均匀分布的伪随机数,参数还可以  是’...
  • ’ ‘”‘ (double quote) becomes ‘"’ when ENT_NOQUOTES is not set. ”’ (single quote) becomes ‘'’ only when ENT_QUOTES is set. ‘<‘ (less than) becomes ‘<’ ‘>’ (greater than) ...
  • 双缓冲单缓存的区别

    千次阅读 2016-08-29 09:59:52
    双缓冲单缓存的区别编码时遇到glutInitDisplayMode(unsigned int mode) ;函数,主要作用是设置初始显示模式,其中有两个可用形参不甚理解。分别为GLUT_SINGLE,GLUT_DOUBLE。其中GLUT_SINGLE指定单缓存窗口,GLUT...
  • matlab中 rand randn的区别

    万次阅读 2016-04-19 20:39:07
    rand(m,n,'double')生成指定精度均匀分布伪随机数,参数还可以 是'single' rand(RandStream,m,n)利用指定RandStream(我理解为随机种子)生成伪 随机数 2,randn 生成标准正态分布伪随机数(均值为0,
  • python- rand、randnrandi的区别

    千次阅读 2018-06-07 21:18:49
    rand 生成均匀分布伪随机数。分布在(0~1)之间 randn 生成标准正态分布伪随机数... rand(m,n,’double’)生成指定精度均匀分布伪随机数,参数还可以是’single’ rand(RandStream,m,n)利用指定RandStr...
  • 分布在(0~1)之间 主要语法:rand(m,n)生成m行n列均匀分布伪随机数 rand(m,n,'double')生成指定精度均匀分布伪随机数,参数还可以 是'single' rand(RandStream,m,n)利用指定RandStream(我理解为随机...
  • 阅读C/C++源码时经常看到define语句中###,这里记录下其区别和用法。 先看如下代码: #include <stdio.h> // 测试不带 # 号效果 #define NO_NUMBER_SIGN(x) x // 测试一个 # 号效果 #define SINGLE_...
  • PHP字符串允许用单引号双引号作为边界符,他们之间略有区别: 双引号字符串对于内嵌变量或表达式会用他们值来进行转换,而单引号字符串则不会进行转换。但两者都会对斜杠开头转义序列(如:\\、\'等)进行...
  • 一、引号定义字符串  在php中,通常一个字符串被定义在一对引号中,如: 'i am a string in single quotes' "i am a string in double quotes"  php语法分析器是用成对引号来判断一个字符串。因此,所有
  • I am a string in double quotes" PHP语法分析器是用成对引号来判断一个字符串。因此,所有字符串必须使用同一种单或者双引号来定义开始结束。例如,下面字串定义是不合法:"I am not a valid ...
  • per单引号双引号的区别

    千次阅读 2011-12-17 13:25:16
    1)单引号:single quote e.g. print'IMISSYOU"SOMUCH"'; 它将单引号中内容包括Perl双引号完整输出,同时即使引号中包含了变量或标量,都将被作为字符处理,如下 单引号里面可以包含双引号,并且可以包含...
  • ref:http://www.onexin.net/javascript-single-and-double-quotes-and-use-the-difference-between/ <input value="Test" type="button" onclick="alert(&quot;OK&quot;);" />//html...
  • 1 PHP中单引号与双引号的区别 在PHP中,通常一个字符串被定义在一对引号中,如: I am a string in single quotes "I am a string in double quotes" PHP语法分析器是用成对的引号来判断一个字符串的。因此,所有...
  • <p>I'm not an expert in PHP programming, but I'm a little confused why I see some code in PHP with string placed in single quotes and sometimes in double quotes. <p>I just know in .NET, or the C ...
  • <p>I'm not an expert in PHP programming, but I'm a little confused why I see some code in PHP with string placed in single quotes and sometimes in double quotes. <p>I just know in .NET, or the C ...
  • <p>I know the difference of single and double quotes at the echo command but can't figure out the above. At my testing server it works fine both ways, but is there something deeper? </div>
  • 1、定义字符串 在PHP中,字符串定义可以使用单引号,...下面引号串都是合法: Php代码 复制代码 代码如下: $s = “I am a ‘single quote string’ inside a double quote string”; $s = ‘I am a “double quot

空空如也

空空如也

1 2 3 4
收藏数 79
精华内容 31
关键字:

double和single的区别