为什么浮动不被视为整体类型?

时间:2013-03-02 08:03:10

标签: c++ templates typetraits

我正在关注type_traits,并且意外地发现了float不被视为完整类型的事实。这对我来说有点意外。

我浏览网页以查找适当的信息,但无法找到有关该事实的任何信息。我能找到的就像this

  

如果T是整数类型(bool,char,char16_t,char32_t,wchar_t,short,int,long,long long,包括任何signed,unsigned和cv-qualified变体),则提供成员常量值等于true。对于任何其他类型,值为false。

所以问题在这里: 为什么C ++标准委员会认为浮动是一个整体类型?

4 个答案:

答案 0 :(得分:12)

整数类型只有整数 - 整数。浮点类型的目的也是表示非整数。

来自Wikipedia page on integer (computer science)

  

在计算机科学中,整数是整数数据类型的数据,这是一种表示数学整数的有限子集的数据类型。

答案 1 :(得分:5)

我怀疑你的困惑是积分的含义适用:

  

INTEGRAL的定义

     

1 a:完整性至关重要:成分   “课程的一个组成部分”

     

b(1):是,包含,或   与一个或多个数学整数有关(2):与或有关   关注数学整合或数学结果   集成

(1a)不完整(float将是必不可少的),但(1b)与整数有关。

答案 2 :(得分:3)

Jon的回答是正确的,但这里是一些 type traits的简短概述,可能会对您有所帮助:

  • is_integral检查类型是否为整数类型
  • is_floating_point检查类型是否为浮点类型
  • is_arithmetic检查类型是整数还是浮点类型

来自Howard Hinnant的here是一个不错的图表,显示了类型类别之间的关系。

答案 3 :(得分:-1)

这些是整数类型,因为在c ++中存储整数类型或字符时,它以整数格式(甚至是字符,即ASCII格式)存储。但是没有存储浮点数,因为我们没有任何将浮点数转换为二进制格式