目前正在学习C#。
我不明白为什么有人会在使用浮点数或双打时使用整数。
浮点数将加/减整数和十进制数,那么为什么有人会使用普通的旧整数呢?
看起来像浮子或双重将照顾整数可以做的任何事情与能够处理的奖金。数字也是..
谢谢!
答案 0 :(得分:10)
主要原因与我们通常更喜欢使用整数分数而不是固定精度小数的原因相同。对于有理分数,(1/3)乘以3总是1.(1/3)加(2/3)总是1.(1/3)乘以2是(2/3)。
为什么呢?因为整数分数是精确的,就像整数一样精确。
但是使用固定精度的实数 - 它并不那么漂亮。如果(1/3)是.33333
,那么3次(1/3)将不是1.如果(2/3)是.66666
,那么(1/3)+(2 / 3)不会是一个。但是如果(2/3)是.66667
,则(1/3)乘以2将不是(2/3)而1减去(1/3)将不是(2/3)。
当然,你无法通过使用更多的地方来解决这个问题。没有小数位数可以让您准确地表示(1/3)。
浮点是一种固定精度的实数格式,就像我上面的固定精度小数一样。它并不总是遵循您可能期望的天真规则。请参阅经典论文What Every Computer Scientist Should Know About Floating-Point Arithmetic。
要回答您的问题,首先应该尽可能使用整数,并且只在必要时使用浮点数。而且你应该永远记住,浮点数的精度有限,并且比较两个浮点数以确定它们是否相等可以得出你可能没想到的结果。
答案 1 :(得分:1)
正如您在here中所看到的,不同的类型各有各自的大小。
例如,在使用大型数据库时,int
或float
可能会将所需的大小翻倍。
答案 2 :(得分:0)
有几个原因。性能,记忆,甚至不希望看到小数(不必使用格式字符串)。
答案 3 :(得分:0)
您有不同的数据类型,因为它们使用不同的位数来存储数据。
通常,整数将使用比double更少的内存,这就是为什么不只是使用最大可能的数据类型。
答案 4 :(得分:0)
在计算中,浮点描述了一种以可支持多种值的方式表示逼近实数的方法。通常,数字大致表示固定数量的有效数字,并使用指数进行缩放。
在计算机科学中,整数是整数数据类型的数据,数据类型代表数学整数的一些有限子集。
所以,精确是一个论点。
答案 5 :(得分:0)
有几个原因。首先,就像人们已经说过的那样,双重存储64位数值,而int只需要32位。
Float是另一种情况。 int和float都存储32位数字,但float不太精确。浮点值最多可精确到7位,但除此之外,它只是一个近似值。如果您有更大的数字,或者在某些情况下您有意想强制只使用没有小数的整数值,那么int就是您的选择。如果您不关心精度损失并希望允许更宽范围的值,则可以使用float。
答案 6 :(得分:0)
使用整数的主要原因是内存消耗和性能。
此外,如果您需要使用表示实数的类型来完成所有这些操作,那么您的代码将更容易出错。
答案 7 :(得分:0)
这里给出的大部分答案直接涉及数学概念。使用整数有纯粹的计算原因。几个跳到脑海: