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

azi*_*ian 5 c++ templates type-traits

我正在看着type_traits,不小心碰到了这个事实,这float被认为不是一个完整的类型.这对我来说有点意外.

我浏览了网页以找到适当的信息,但找不到任何与此相关的信息.我能找到的就是这样的:

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

所以这里的问题是:为什么C++标准委员会认为浮点数不是一个整数类型?

Jon*_*eet 12

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

来自整数(计算机科学)维基百科页面:

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

  • Jon Skeet始终是解决方案. (4认同)

Ben*_*son 5

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

INTEGRAL的定义

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

b(1):存在,包含或涉及一个或多个数学整数(2):与数学积分或数学积分结果有关或有关

它不是(1a)对完整性(float可能是)必不可少的,而是(1b)与整数有关.


Dan*_*rey 5

乔恩的答案是正确的,但以下是一些 可能对您有所帮助的类型特征的简短概述:

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

Howard Hinnant 提供的一个很好的图表,显示了类型类别之间的关系。