在Go中,可以根据系统架构的不同,将int类型等效为int32或int64。我可以声明一个整数变量,而不必担心它的大小:
var x int为什么没有float类型,根据我的系统架构,它相当于float32或float64?我希望我也能做到:
var x float发布于 2014-06-22 18:44:41
浮子在release 2011/01/20中被移除。
您仍然可以使用short variable declaration
x := 0.但正如GO FAQ中提到的
出于可移植性的原因,我们决定以代码中的一些显式转换为代价,使事情变得清晰明了。
你可以看到辩论before 2011 in this thread
我有点沮丧,即使是看到建议,摆脱不大小的浮动和复杂的类型。 人们已经有一代人没有真正处理这个问题了(人类一代,而不是计算机一代;>90年代初是最后一次这是一个真正的问题),但这正是我认为它再次变得重要的时刻。 在向64位芯片过渡到非基于Intel的平台(移动芯片、GPU等)之间,我认为淘汰这些类型是一个巨大的错误。整数类型和浮点数类型之间的类比问题是:
2^n的算术,在这种情况下,它是准确的,在这种情况下,使用定点表示会更好)。
因此,没有相同的可能性“我只是想要一个良好的表示”。除了内存使用(和缓存)之外,32位浮点数从来没有速度优势,因此现有的32位浮点数类型没有被定义为“快速”浮点数。它就在那里(我猜),因为在C中这就是它的名字。如果float64被称为"double",我不会反对,因为在我所知道的大多数语言中都是这样的。
但我真的认为没有“浮点”类型的语言会更好。
对于任何浮点的使用来说,大小确实很重要,无论是因为内存消耗,还是由于所需的精度。
发布于 2014-06-22 18:48:34
对于整数,通常需要一个整数类型,其大小是平台的本地单词大小:这具有性能优势,以及与使用单词大小的系统其他部分的低级别互操作性的好处。
对于浮点值,情况并非如此。即使在32位系统中,双精度浮点(Go's float64)通常也比单精度浮点(float32)更常见,而不是更慢.单精度浮点算法比较少见,通常只有在内存使用或输入输出速度更强的情况下才有用。
因此,尽管您编写的float“将等同于float32或float64,这取决于您的系统架构”,但我不确定您认为应该与float32等效的是什么架构。
https://stackoverflow.com/questions/24354439
复制相似问题