c – 为什么标准同时提供is_integer和is_exact?

c – 为什么标准同时提供is_integer和is_exact?,第1张

概述std :: numeric_limits提供了2个互斥的常量: > is_integer :“对于所有整数算术类型T都为真” > is_exact:“对于使用精确表示的所有算术类型T都是如此” 是否存在非精确积分类型的可能性?在这里试图允许什么? 在我的所有模板中,我知道我是否处理精确数字,我使用了is_integer,我是否还需要为is_exact添加一个检查? 从 is_exact cppr std :: numeric_limits提供了2个互斥的常量:

> is_integer :“对于所有整数算术类型T都为真”
> is_exact:“对于使用精确表示的所有算术类型T都是如此”

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

在我的所有模板中,我知道我是否处理精确数字,我使用了is_integer,我是否还需要为is_exact添加一个检查?

解决方法 从 is_exact cppreference页面:

Notes

While all fundamental types T for which
std::numeric_limits<T>::is_exact==true are integer types,a library
may define exact types that aren’t integers
,e.g. a rational
arithmetics type representing fractions.

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

21.3.4.1 numeric_limits members [numeric.limits.members]

static constexpr bool is_exact;

true if the type uses an exact representation. All integer types are exact,but not all exact types are integer. For example,rational and fixed-exponent representations are exact but not integer.

总结

以上是内存溢出为你收集整理的c – 为什么标准同时提供is_integer和is_exact?全部内容,希望文章能够帮你解决c – 为什么标准同时提供is_integer和is_exact?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1236283.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存