希望这是SO这类问题的第一个问题。 C#具有4种整数类型:
byte
:1个字节
short
:2个字节
int
:4个字节
long
:8个字节
但是只有两种浮点类型:float
和double
。为什么创作者没有必要提出一个小的浮动?有一个有关Minifloats的维基百科article。
答案 0 :(得分:2)
尝试回答-
大多数浮点值系统都基于IEEE 754标准;系统需要标准化,以便硬件制造商可以提供可互换的基于硬件的格式实现。因此,对于初学者来说,除非实现标准化,否则您将不会找到实现,而IEEE 754定义的最小格式为binary16。
https://en.wikipedia.org/wiki/IEEE_754#Representation_and_encoding_in_memory
binary16小于C#提供的最小类型,因此我们仍然留有“ C#为什么不实现binary16?”的信息。
答案可能是以下原因的组合:
另外,C#表面上可以运行的最常见平台-x86-32 / 64和ARM-对binary16的硬件支持不多,或者很长一段时间都没有(见{{3} }。
最后,看起来.Net / C#背后的人们确实在考虑增加对它的支持,以及binary128等其他类型:
自18年前创建C#以来,软件开发环境发生了很大变化。如今,我们开始在GPU上运行更多代码,实际上我们在其中查找并使用binary16类型。但是,当首次创建C#时,这可能并不被视为可行的用例。既然C#-on-GPU变得越来越大,越来越可行,那么语言设计人员将重新评估设计并随着语言使用的发展而发展,这是有道理的。看来他们确实在这样做。