为什么还要long

加权不平权 2011-07-06 10:23:52
C#中long有64个字节,double也有64个字节,但double的表示范围比long表示的要大很多那么我们为什么还需要long这个类型呢?急等高手解决!
...全文
332 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
moonwrite 2011-07-06
  • 打赏
  • 举报
回复
找到一个超底层的知识(我有点无聊的说)
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

把分数给我把 谢谢
老毕 2011-07-06
  • 打赏
  • 举报
回复
你去试试这个输出是true还是false
double a = 3.0d / 7d;
double b = (3.0d / 70d) * 10d;

Console.WriteLine(a == b);
加权不平权 2011-07-06
  • 打赏
  • 举报
回复
10楼v5,
还有就是double类型的处理开销大,对只需要简单整形操作情况下得不偿失,不如定义一个long类型。
还有就是在int+double等类型的时候会自动向上转型,这样int是32位,double是64位,必然会造成内存空间的拼凑。(int和double在内存中都是连续的空间)所以造一个也是64位的整形给自己转型减少开销。
还有一个编译平台不支持double。
这只是个人的一点愚见!
moonwrite 2011-07-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sunquan291 的回复:]

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

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 什么的
结果被喷了
种草德鲁伊 2011-07-06
  • 打赏
  • 举报
回复
楼主强大
加权不平权 2011-07-06
  • 打赏
  • 举报
回复
我是说double类型的范围能够包括到long类型所能表示的范围。而且double的范围比long精度更高!存在long的意义究竟在哪里,我刚刚找出了五点原因!
老毕 2011-07-06
  • 打赏
  • 举报
回复
double和long int都是64位,但是一个表示的是浮点数,一个表示的是整数,完全不同的概念和bit使用方式 。
dingqiannan 2011-07-06
  • 打赏
  • 举报
回复
楼主 你亮了哦~~
vrhero 2011-07-06
  • 打赏
  • 举报
回复
整数和实数有什么区别?楼主真对不起你的中小学数学老师...
机器人 2011-07-06
  • 打赏
  • 举报
回复
long 是长整形,double 是浮点型

各有各用途。
烈火蜓蜻 2011-07-06
  • 打赏
  • 举报
回复
去看看基础再问吧.
bdmh 2011-07-06
  • 打赏
  • 举报
回复
老大,不是64字节,是8字节,64位,搞清楚好不好,long是整形的,double是浮点型的,完全不一样
种草德鲁伊 2011-07-06
  • 打赏
  • 举报
回复
long是精确的整数,double是近似数

110,546

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧