为什么处理器需要整数和浮点数?谢谢。
它们只是数字,因此您可能认为您不需要区分。但是,在许多语言中,当进行整数运算时,可以进行优化-加法、减法、乘法和除法都可以使用CPU指令进行。同样,有一些指令可以对浮点数执行类似的操作,但由于机器中表示的数字不同,并且操作也不同,因此将处理器中明显的整数和浮点数之间的区别提升到编程语言本身中是有意义的。
C#、Java、C ++和其他语言都具有用于处理整数和浮点数的不同类型。Javascript则做出了相反的选择-没有特殊的整数类型,如果我没有弄错的话,所有数字都是浮点数。
整数对处理器资源来说更容易,通常更快。这在许多年前是个大问题,当时的处理器甚至没有内置的浮点功能。现在不太一样了,但在紧凑代码中仍然可以显著影响差异。
整数通常是你所需要的全部。
浮点数的范围比整数大得多。此外,它们可以表示分数值。然而,这些功能是以精度损失为代价提供的。
编辑:(我所说的“精度损失”是什么意思)
整数算术始终是精确的,只要不提供导致溢出或除以零的操作数。
但是,在使用浮点算术时,可能会丢失某些值的部分,当在简单操作中使用这些值时。原因是浮点值提供了巨大的范围,因此在给定(相对较小的)存储器(通常为8或16字节)内无法表示所有连续值。
int a = 1/2;
在小学算术方面是100%精确的? - Potatoswatter整数是编程任务中最常用的东西。它们可以表示内存地址。从一个整数到下一个整数很容易计算:只需加一。
浮点数值用于近似实数。实数是连续数学中最常见的事物。连续数学用于表示现实世界。(因此术语“实数”)
浮点数通常不能用作整数。您无法轻松地从X计数到比X大的下一个数字。它们会四舍五入,而且不能保证X + 1甚至是与X不同的数字。一般来说,即使表达式应该相等,如果它们是由不同的操作序列产生的,则两个浮点数可能是不同的。
浮点数就像现实生活一样不可预测。整数像计算机一样有序和高效。