int和double之间的区别

15
为什么有人会使用 int 而不是 double 呢?
似乎 double 比 int 更加灵活。

所有其他(可见的)问题都是关于Java的(有些未标记),因此可以假定是Java。 - Peter Mortensen
2
(OP已经离开了 - “最后一次出现是在7年前”。) - Peter Mortensen
4个回答

33

intdouble的语义不同。考虑到除法。 1/2 的结果是01.0/2.0 的结果是0.5。在任何情况下,其中一个答案是正确的,另一个是错误的。

尽管如此,有一些编程语言(例如JavaScript)只支持64位浮点数类型的数字数据。为了获得与Java中的int相同的语义,您必须显式截断某些除法结果。而像Java这样支持整数类型的语言会自动对整数变量进行截断。

除了与double不同的语义之外,int算术通常更快,并且较小的大小(32位对比64位)可更有效地使用缓存和数据传输带宽。


9

整数的操作是精确的。 double 是一种浮点数据类型,而浮点操作在存在分数时是近似的。

double 在许多实现中(例如大多数32位系统)占用的空间是 int 的两倍。


1
据我所知,在64位架构上,double和int都是64位。 - Pétur Ingi Egilsson
我澄清了这是大多数32位系统。 - Barmar
1
完美!请记住,在32位机器上,C数据类型int可能是16位的! - Pétur Ingi Egilsson

1

int是一个整数的二进制表示,double是一个双精度浮点数。


-1

简短回答:

int 占用四个字节的内存(且不能包含小数),而 double 则占用八个字节的内存。这只是不同目的所使用的不同工具。


2
你会发现这取决于环境和语言。C语言没有定义int的大小。 - Pétur Ingi Egilsson
真的。调用 sizeof(int) 可能是你最好的选择,以确保正确。但是你知道现在是否还存在2字节整数吗? - IDDQD
6
在Arduino(一种流行的电子原型平台)上,C语言中的整数是16位的。 - Pétur Ingi Egilsson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接