当前位置: 首页 > 面试题库 >

为什么Go中有int而不是float?

岳凯康
2023-03-14
问题内容

在Go中,有int可能等同于int32int64取决于系统架构的类型。我可以声明一个整数变量而不必担心它的大小:

var x int

为什么没有type float,它等于float32float64取决于我的系统的体系结构?我希望我也可以:

var x float

问题答案:

float已在版本2011/01/20中删除。

您仍然可以使用简短的变量声明:

x := 0.

但正如GO常见问题解答所述:

出于可移植性的原因,我们决定以代码中的一些显式转换为代价,使事情变得清晰明了。

您可以在以下主题中查看2011年之前的辩论:

我什至对摆脱无用的浮点数和复杂类型的建议感到有些沮丧。
一代人都不需要真正解决这个问题(人类一代,而不是计算机一代;> 90年代初是最后一次真正成为问题),但这正是我认为的时刻它再次变得相关。
在过渡到64位芯片和过渡到非基于Intel的平台(移动芯片,GPU等)之间,我认为删除这些类型是一个巨大的错误。

类比整数类型和浮点类型的问题是:

  • 在整数类型的情况下,您并不关心大小,除非它溢出
    * 对于浮点类型,您始终需要注意大小,因为它总是会影响您的答案(除非您仅在涉及小整数2^n情况下进行算术运算,否则这种情况是准确的,在这种情况下您会更好(带有定点表示)。
    因此
    ,“我只想要一个好的代表”就不可能有同样的可能性* 。

除了在内存使用(和缓存)方面,32位浮点数从未具有速度优势,因此现有的32位浮点数类型未定义为“快速”浮点数。它就在那儿(我想),因为这就是C语言中所说的。我不反对如果float64被称为“
double”(在我所知道的大多数语言中都是这样)。

但是我真的认为,如果没有“ float”类型,该语言会更好。
大小对于任何浮点数的使用确实很重要,无论是由于内存消耗还是由于所需的精度。



 类似资料:
  • 问题内容: 为什么不: 代替: 获得唯一哈希码的更高机会? 问题答案: 因为数组的最大长度为。 由于的主要用途是确定将对象插入/ 的后备数组中的哪个插槽,因此hashcode> 将无法存储在该数组中。

  • 我目前正在学习和学习Java。现在我必须提交一个交付,并使用。 现在有人向我报告说,我的程序不可编译。(可能是测试人员用太低的版本编译的?)。这就是为什么我在互联网上搜索Random的文档。 https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/random.html

  • 我已经看到变量的原始版本和对象版本之间有以下映射: 浮- 所以,对他们所有人来说,唯一的区别就是世界上的第一个字母。我想知道为什么这个规则不适用于变成整数(而不是int)的int和变成字符而不是(char)的char。 我不知道这是否是问这个问题的正确地方,但我真的很想知道这个选择是否有原因,即使因为我教孩子们java,他们也经常问我同样的问题。

  • 我非常熟悉这个框架,从一开始我就喜欢它。 有一件事我还不能完全理解,那就是为什么打字有时会中断。 特别是对于这个问题,,我不确定为什么没有使用,起初我认为可能是int32/int16/float等之间的行为差异。。但(对我来说)这在透明化中是没有意义的。 因此,从lib来看,它需要很好地处理数学问题。 我的问题是关于语义的,为什么决定使用而不是?

  • 示例:类中的字段使用。 如果差异太小,那么为什么这些数据类型(、)会存在呢?

  • 问题内容: 这是从这里获取的:http : //tour.golang.org/#5 结果: 问题答案: 使用java /scala将会得到完全相同的结果,该函数“返回朝Y X后的下一个表示值。” 如本主题所述 float64 不能表示所有16位数字。 例如,如果x = 0.12345678901234567,使用,您可以看到附近的float64值为… 1234565,… 1234566和… 12