C#中long有64个字节,double也有64个字节,但double的表示范围比long表示的要大很多那么我们为什么还需要long这个类型呢?急等高手解决!

解决方案 »

  1.   

    long是精确的整数,double是近似数
      

  2.   

    老大,不是64字节,是8字节,64位,搞清楚好不好,long是整形的,double是浮点型的,完全不一样
      

  3.   

    long 是长整形,double 是浮点型各有各用途。
      

  4.   

    double和long int都是64位,但是一个表示的是浮点数,一个表示的是整数,完全不同的概念和bit使用方式 。
      

  5.   

    我是说double类型的范围能够包括到long类型所能表示的范围。而且double的范围比long精度更高!存在long的意义究竟在哪里,我刚刚找出了五点原因!
      

  6.   


    1楼回答了
    long是精确的整数,double是近似数long 1+1=2; 每个cpu(分AMD,Intel, 32位, 64位)的运行都一样的,另外还有可能每种语言的定义啊
    double 1.0+1.0 就有可能出现诡异的情况了  
    特别是float
    是非常有可能 1.0+1.0 !=2 的具体用什么数字相加会出现诡异情况就不知道了上次还有人在喊.net的 bug 什么的
    结果被喷了
      

  7.   

    10楼v5,
    还有就是double类型的处理开销大,对只需要简单整形操作情况下得不偿失,不如定义一个long类型。
    还有就是在int+double等类型的时候会自动向上转型,这样int是32位,double是64位,必然会造成内存空间的拼凑。(int和double在内存中都是连续的空间)所以造一个也是64位的整形给自己转型减少开销。
    还有一个编译平台不支持double。
    这只是个人的一点愚见!
      

  8.   

    你去试试这个输出是true还是false
    double a = 3.0d / 7d;
    double b = (3.0d / 70d) * 10d;Console.WriteLine(a == b);
      

  9.   

    找到一个超底层的知识(我有点无聊的说)
    http://4develop.in/page/Delphi/20110701_17_01b3977b-1639-40cb-bef7-efabbd1c589f/%E6%B5%AE%E7%82%B9%E6%95%B0%E7%9B%B8%E5%8A%A0%E7%9A%84%E7%81%B5%E5%BC%82%E9%97%AE%E9%A2%98%E6%B1%82%E5%8A%A9.html把分数给我把 谢谢