首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在围棋中有整数而没有浮动?

问为什么在围棋中有整数而没有浮动?
EN

Stack Overflow用户
提问于 2014-06-22 18:37:56
回答 2查看 2.3K关注 0票数 9

在Go中,可以根据系统架构的不同,将int类型等效为int32或int64。我可以声明一个整数变量,而不必担心它的大小:

代码语言:javascript
复制
var x int

为什么没有float类型,根据我的系统架构,它相当于float32或float64?我希望我也能做到:

代码语言:javascript
复制
var x float
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-22 18:44:41

浮子在release 2011/01/20中被移除。

您仍然可以使用short variable declaration

代码语言:javascript
复制
x := 0.

但正如GO FAQ中提到的

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

你可以看到辩论before 2011 in this thread

我有点沮丧,即使是看到建议,摆脱不大小的浮动和复杂的类型。 人们已经有一代人没有真正处理这个问题了(人类一代,而不是计算机一代;>90年代初是最后一次这是一个真正的问题),但这正是我认为它再次变得重要的时刻。 在向64位芯片过渡到非基于Intel的平台(移动芯片、GPU等)之间,我认为淘汰这些类型是一个巨大的错误。整数类型和浮点数类型之间的类比问题是:

  • 在整数类型的情况下,您不关心大小,除非它溢出。
  • 在浮点数类型的情况下,您总是需要考虑大小,因为它总是会影响您的答案(除非您只在做涉及小整数* 2^n的算术,在这种情况下,它是准确的,在这种情况下,使用定点表示会更好)。 因此,没有相同的可能性“我只是想要一个良好的表示”。

除了内存使用(和缓存)之外,32位浮点数从来没有速度优势,因此现有的32位浮点数类型没有被定义为“快速”浮点数。它就在那里(我猜),因为在C中这就是它的名字。如果float64被称为"double",我不会反对,因为在我所知道的大多数语言中都是这样的。

但我真的认为没有“浮点”类型的语言会更好。

对于任何浮点的使用来说,大小确实很重要,无论是因为内存消耗,还是由于所需的精度。

票数 13
EN

Stack Overflow用户

发布于 2014-06-22 18:48:34

对于整数,通常需要一个整数类型,其大小是平台的本地单词大小:这具有性能优势,以及与使用单词大小的系统其他部分的低级别互操作性的好处。

对于浮点值,情况并非如此。即使在32位系统中,双精度浮点(Go's float64)通常也比单精度浮点(float32)更常见,而不是更慢.单精度浮点算法比较少见,通常只有在内存使用或输入输出速度更强的情况下才有用。

因此,尽管您编写的float“将等同于float32或float64,这取决于您的系统架构”,但我不确定您认为应该与float32等效的是什么架构。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24354439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档