为什么该标准同时提供is_integer和is_exact

Why does the standard provide both is_integer and is_exact?

本文关键字:is integer exact 标准 为什么      更新时间:2023-10-16

std::numeric_limits提供了 2 个互斥常量:

  • is_integer : " true 对于所有整数算术类型T">

  • is_exact : "true 适用于所有使用精确表示的算术类型T">

是否存在非精确积分类型的可能性?这里试图允许什么?

在我所有的模板中,我知道我是否正在处理精确的数字,我使用了is_integer,我现在也需要为is_exact添加支票吗?

is_exact cpp首选项页面:

笔记

虽然所有基本类型 T 对于其中 std::numeric_limits<T>::is_exact==true是整数类型,一个库可以定义不是整数的确切类型,例如有理数表示分数的算术类型。

<小时 />

而且,正如@Holt所提到的,该标准也描述了它:

21.3.4.1 numeric_limits成员 [数字限制成员]

静态 constexpr 布尔is_exact;

如果类型使用精确表示形式,则为 true。所有整数类型都是精确的,但并非所有确切类型都是整数。例如,有理数和固定指数表示是精确的,但不是整数。