当前位置: 首页 > article >正文

C++11标准模板(STL)- 常用数学函数 - 浮点数操作函数 - 检查给定数是否具有有限值(std::isfinite)

常用数学函数

检查给定数是否具有有限值

std::isfinite

定义于头文件 <math.h>

#define isfinite(arg) /* implementation defined */

(C99 起)

确定给定的浮点数 arg 是否拥有有限值,即它是正规、非正规或零,但不是无穷大或 NaN 。该宏返回整数值。

忽略 FLT_EVAL_METHOD :即使以多于参数类型的范围和精度对它求值,首先仍将它转换到其语义类型,然后分类基于该类型。

参数

arg-浮点值

返回值

arg 拥有有限值则返回非零整数值,否则返回 ​0​ 。

调用示例

#include <iostream>
#include <cstdlib>
#include <typeinfo>
#include <cinttypes>
#include <cmath>
#include <math.h>
#include <tgmath.h>
#include <stdio.h>
#include <math.h>
#include <float.h>

int main(void)
{
    std::cout << std::boolalpha;

    //确定给定的浮点数 arg 是否拥有有限值,即它是正规、非正规或零,但不是无穷大或 NaN 。
    std::cout << "isfinite(FP_NAN)          = " << std::isfinite(FP_NAN) << std::endl;
    std::cout << "isfinite(FP_NORMAL)       = " << std::isfinite(FP_NORMAL) << std::endl;
    std::cout << "isfinite(FP_INFINITE)     = " << std::isfinite(FP_INFINITE) << std::endl;
    std::cout << "isfinite(FP_ZERO)         = " << std::isfinite(FP_ZERO) << std::endl;
    std::cout << "isfinite(FP_SUBNORMAL)    = " << std::isfinite(FP_SUBNORMAL) << std::endl;
    std::cout << "isfinite(NAN)             = " << std::isfinite(NAN) << std::endl;
    std::cout << "isfinite(INFINITY)        = " << std::isfinite(INFINITY) << std::endl;
    std::cout << "isfinite(HUGE_VALF)       = " << std::isfinite(HUGE_VALF) << std::endl;
    std::cout << "isfinite(HUGE_VALL)       = " << std::isfinite(HUGE_VALL) << std::endl;
    std::cout << "isfinite(0.0)             = " << std::isfinite(0.0) << std::endl;
    std::cout << "isfinite(DBL_MIN/2.0)     = " << std::isfinite(DBL_MIN / 2.0) << std::endl;
    std::cout << "isfinite(1.0)             = " << std::isfinite(1.0) << std::endl;
    std::cout << "isfinite(exp(800))        = " << std::isfinite(exp(800)) << std::endl;
    std::cout << "isfinite(INT8_MAX)        = " << std::isfinite(INT8_MAX) << std::endl;
    std::cout << "isfinite(INT16_MAX)       = " << std::isfinite(INT16_MAX) << std::endl;
    std::cout << "isfinite(INT32_MAX)       = " << std::isfinite(INT32_MAX) << std::endl;
    std::cout << "isfinite(INT64_MAX)       = " << std::isfinite(INT64_MAX) << std::endl;
    std::cout << "isfinite(UINT8_MAX)       = " << std::isfinite(UINT8_MAX) << std::endl;
    std::cout << "isfinite(UINT16_MAX)      = " << std::isfinite(UINT16_MAX) << std::endl;
    std::cout << "isfinite(UINT32_MAX)      = " << std::isfinite(UINT32_MAX) << std::endl;
    std::cout << "isfinite(UINT64_MAX)      = " << std::isfinite(UINT64_MAX) << std::endl;

    return 0;
}

输出

isfinite(FP_NAN)          = true
isfinite(FP_NORMAL)       = true
isfinite(FP_INFINITE)     = true
isfinite(FP_ZERO)         = true
isfinite(FP_SUBNORMAL)    = true
isfinite(NAN)             = false
isfinite(INFINITY)        = false
isfinite(HUGE_VALF)       = false
isfinite(HUGE_VALL)       = false
isfinite(0.0)             = true
isfinite(DBL_MIN/2.0)     = true
isfinite(1.0)             = true
isfinite(exp(800))        = false
isfinite(INT8_MAX)        = true
isfinite(INT16_MAX)       = true
isfinite(INT32_MAX)       = true
isfinite(INT64_MAX)       = true
isfinite(UINT8_MAX)       = true
isfinite(UINT16_MAX)      = true
isfinite(UINT32_MAX)      = true
isfinite(UINT64_MAX)      = true


http://www.kler.cn/a/377121.html

相关文章:

  • 安装bert_embedding遇到问题
  • officeweb365 弱口令登录
  • java实现预览服务器文件,不进行下载,并增加水印效果
  • python使用PyQt5,整套,桌面应用
  • 2、redis的持久化
  • Type c系列接口驱动电路·内置供电驱动电路使用USB2.0驱动电路!!!
  • 从三方云服务器将数据迁移至本地,如何保障安全高效?
  • solidity中的继承
  • 质数的小游戏~(牛客,cf)
  • 《机器人SLAM导航核心技术与实战》第1季:第10章_其他SLAM系统
  • 【VUE+DRF】案例升级
  • 如何在Oracle数据库中获取版本信息
  • es拼音分词器(仅供自己参考)
  • 前端react常见面试题目(basic)
  • 树莓派开发相关知识七 -串口数码管
  • 从0开始学统计-什么是中心极限定理
  • [perl] 数组与哈希
  • 【Linux】IPC进程间通信:并发编程实战指南(一)
  • 纯前端生成PDF(jsPDF)并下载保存或上传到OSS
  • 提升当当网数据爬取效率:代理IP并发抓取技术
  • [Redis] Redis事务
  • Linux内核与用户空间
  • 问:Redis如何做到原子性?
  • (自用)机器学习python代码相关笔记
  • ES入门:查询和聚合
  • Java之继承