- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我知道这可能是一个非常天真的问题,但我对 Scala 和其他类似语言很陌生,这确实让我感到困惑。
为什么 Scala(和其他语言)有两个不同的整数类和 double 类?既然整数是 float (1.0 = 1)
,为什么还要使用 Int 类呢?
我有点理解,也许您想确保某些整数永远不会更改为 float ,或者您可能想防止出现像 1.00000000002 != 1
这样的情况,这可能会令人困惑您只看到前几位数字,但我是否遗漏了其他一些潜在的理由?
谢谢!
最佳答案
整数对于软件的内部工作非常重要,因为许多东西在内部都是以整数的形式实现的,而你不一定会认为它们是“数字”。例如,内存地址一般用整数表示;单独的八位字节通常被视为一字节整数;字符(例如 ASCII 字符和 Unicode 字符)通常由整数值代码点标识。 (顺便说一句,在所有这些情况下,在极少数情况下我们想要显示它们,我们通常使用十六进制表示法,这很方便,因为它每八位字节恰好使用两个字符。)另一个重要的情况,通常是 即使在编程之外也被认为是数字,是数组索引;即使在数学中,长度为 3 的数组也将具有编号为 1、2 和 3 的元素(尽管在编程中,许多语言(包括 Scala)将使用索引 0、1 和 2,有时是因为映射的底层方案内存地址的索引,有时是由于与旧语言这样做相关的历史原因)。
更一般地说,计算(以及现实世界)中的许多事物都是严格量化的;编写“2.4表行”或“2.4循环迭代”是没有意义的,因此使用算术精确并表示精确整数的数据类型很方便。
但是你说得对,这种区别并不是绝对必要的;许多脚本语言,例如 Perl、JavaScript 和 Tcl,大部分都放弃了整数和 float 之间的显式区别(尽管这种区别仍然经常在解释器的工作中进行区分,并且在需要时隐式进行转换) 。例如,在 JavaScript 中,typeof 3
和 typeof 3.0
都是 'number'
。
关于scala - 为什么有 'Int' **和** 'Double' s?为什么不只上一节课呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18668767/
我是一名优秀的程序员,十分优秀!