gpt4 book ai didi

scala - 为什么有 'Int' **和** 'Double' s?为什么不只上一节课呢?

转载 作者:行者123 更新时间:2023-12-03 03:02:01 25 4
gpt4 key购买 nike

所以我知道这可能是一个非常天真的问题,但我对 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 3typeof 3.0 都是 'number'

关于scala - 为什么有 'Int' **和** 'Double' s?为什么不只上一节课呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18668767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com