2010-02-26 138 views
3

我不得不说,我很高兴当我打开c#查看整数数据类型为Int16,Int32 and Int64。它消除了任何模棱两可的情况,例如int随着年龄增加而变大。与整数类型名称匹配的浮点类型名称?

令我惊讶的是为什么没有或不似乎是Float16,Float32 and Float64 或在正常使用ATLEAST不是:快速搜索MSDN是指float64为R8(非托管类型)是不是这个一样一个双重

我的猜测是在单倍和双倍(或甚至扩展(Float80),它不存在在C#中存在尽可能多的歧义,据我所知,我不知道这可能是如何)尽管十进制似乎是一个Float128,我已经注意到它被称为“扩展浮点精度”,我们应该看到一个Int128来匹配它吗?
编辑:没有任何含糊之处都在单人或双人(这是一个猜测,但它似乎是真的,我想我会添加此为清楚起见。)

,我们应该会看到这种命名约定?/如果我们这样做,你会感激吗?

或者我们应该更进一步,并有Int<N>为任意数量的大小? (是的,我知道有支持这种事情图书馆那里)

+0

鉴于这是一个民意调查风格的问题,也许它应该是社区维基? – Pauk 2010-03-04 16:26:15

回答

1

好了,有各种不同的事情要考虑这里:

  • 通过.NET暴露
    • 什么是可用的类型
    • 各有什么类型称为
  • 什么最终被其他语言,如被别名使用int C#意味着System.Int32

个人而言,我宁愿Float32Float64为CLR类型。我当然可以在F#中看到一些混淆,命名为“float”(对于System.Double)和“float32”(对于System.Single)。我不希望Decimal被称为Float128;可能Decimal128,以允许其他类似的类型。

请注意,Byte不是UInt8顺便说一句 - 大概是因为字节通常用于任意的二进制存储,而不是真正的数量。

我不认为有很多理由让Int<N>具有任意值。至少,我怀疑这个用法是否足够专业化,以将其归入自定义类库而不是将其作为框架的一部分。 (但是,请注意BigInteger是.NET 4.0的一部分。)

+0

+1,因为这是一个民意调查风格的问题,我也会首选Float32/Float64 ...非常轻微。对于ada风格的范围整数,有一点可以说是“Int ”的更进一步,但埃菲尔风格的契约似乎在实践中更好地涵盖了这些情况。 – 2010-03-01 20:47:12

0

那么,它在C#中是浮点型和双精度型,而不是单倍和双精度型,但它与普通差异相同。请记住,有一个alias in C# for every built-in type。至于任意数量的大小,F#引入了BigInteger,应该注意这一点,但是指定整数可以容纳的合理数量的任意大小很可能是性能命中,因为内置类型都很精细调整到CLR的表现。

此外,十进制不是IEEE意义上的浮点类型。当然,这是一种高精度类型,允许浮点小数点,但在IEEE的意义上它不是“浮点类型”。除了精度有限之外,它不会做浮动会做的奇怪事情(例如2x2 = 3.9999999999999),因此它经常用于财务计算。

如果您确实在寻找能够让您大量计算数字的东西,那么您可能希望看到像F#这样的函数式语言,而不是C#。无论如何,函数式语言通常更适合于大量数据处理......它们往往更简洁。

至于命名约定......我从C#开始...... C#是我的标准,对我来说,其他语言也很奇怪。我想,这一切都是从开发者的角度来看的。