C++20 数学常数:<numbers> 头文件的革新
文章目录
- 一、`<numbers>` 头文件中的数学常数
- 二、使用示例
- 三、优势与应用场景
- (一)提高代码可读性
- (二)提高精度
- (三)适用于多种数据类型
- (四)简化数学计算
- 四、总结
C++20 标准引入了
<numbers>
头文件,为开发者提供了一组常用的数学常数。这些常数不仅提高了代码的可读性和精度,还避免了手动定义常数值的麻烦,使得数学计算更加便捷和高效。
一、<numbers>
头文件中的数学常数
<numbers>
头文件定义在 std::numbers
命名空间中,包含以下数学常数:
常量/模板名称 | 描述 | 示例值(近似) |
---|---|---|
e_v | 自然对数的底数 e | 2.718281828459045 |
log2e_v | 以 2 为底的 e 的对数 | 1.4426950408889634 |
log10e_v | 以 10 为底的 e 的对数 | 0.4342944819032518 |
pi_v | 圆周率 π | 3.141592653589793 |
inv_pi_v | π 的倒数 1/π | 0.318309886183121 |
inv_sqrtpi_v | π 的平方根的倒数 1/√π | 0.5641895835477563 |
ln2_v | 自然对数 ln(2) | 0.6931471805599453 |
ln10_v | 自然对数 ln(10) | 2.302585092994046 |
sqrt2_v | 根号 2 √2 | 1.4142135623730951 |
sqrt3_v | 根号 3 √3 | 1.7320508075688772 |
inv_sqrt3_v | 根号 3 的倒数 1/√3 | 0.5773502691896257 |
egamma_v | 欧拉-马歇罗尼常数 γ | 0.5772156649015329 |
phi_v | 黄金比例 Φ | 1.618033988749895 |
除了模板形式的常量,<numbers>
还提供了直接使用 double
类型的常量,例如 std::numbers::e
、std::numbers::pi
等。
二、使用示例
以下代码展示了如何使用 <numbers>
头文件中的数学常数:
#include <iostream>
#include <iomanip>
#include <numbers>
#include <cmath>int main() {// 设置输出精度std::cout << std::fixed << std::setprecision(15);// 打印数学常数std::cout << "自然常数 e 的值是: " << std::numbers::e << std::endl;std::cout << "圆周率 π 的值是: " << std::numbers::pi << std::endl;std::cout << "根号 2 的值是: " << std::numbers::sqrt2 << std::endl;std::cout << "黄金比例 Φ 的值是: " << std::numbers::phi << std::endl;// 使用常数进行计算double result = std::sin(std::numbers::pi / 2);std::cout << "sin(π/2) 的值是: " << result << std::endl;return 0;
}
三、优势与应用场景
(一)提高代码可读性
使用 <numbers>
头文件中的常量可以避免手动定义常数值,使代码更加清晰易读。
(二)提高精度
这些常量提供了高精度的数学值,有助于提高计算的准确性。
(三)适用于多种数据类型
通过模板形式的常量(如 e_v<float>
、pi_v<long double>
),开发者可以根据需要选择不同精度的数据类型。
(四)简化数学计算
这些常量可以直接用于数学计算,无需额外定义或查找常数值。
四、总结
C++20 的 <numbers>
头文件为开发者提供了一组常用的数学常数,这些常数不仅提高了代码的可读性和精度,还简化了数学计算。通过使用 <numbers>
,开发者可以更加高效地进行数学计算,避免手动定义常数值的麻烦。
相关文章:
C++20 数学常数:<numbers> 头文件的革新
文章目录 一、<numbers> 头文件中的数学常数二、使用示例三、优势与应用场景(一)提高代码可读性(二)提高精度(三)适用于多种数据类型(四)简化数学计算 四、总结 C20 标准引入了…...
OpenCV--图像平滑处理
在数字图像处理领域,图像平滑处理是一项极为重要的技术,广泛应用于计算机视觉、医学影像分析、安防监控等多个领域。在 OpenCV 这一强大的计算机视觉库的助力下,我们能便捷地实现多种图像平滑算法。本文将深入探讨图像平滑的原理,…...
【KMP】P7114 [NOIP2020] 字符串匹配|省选-
本文涉及知识点 较难理解的字符串查找算法KMP P7114 [NOIP2020] 字符串匹配 题目描述 小 C 学习完了字符串匹配的相关内容,现在他正在做一道习题。 对于一个字符串 S S S,题目要求他找到 S S S 的所有具有下列形式的拆分方案数: S A …...
C++20 统一容器擦除:std::erase 和 std::erase_if
文章目录 一、std::erase 的用法1.1 语法1.2 参数1.3 返回值1.4 示例 二、std::erase_if 的用法2.1 语法2.2 参数2.3 返回值2.4 示例 三、优势与应用场景3.1 统一的接口3.2 简化代码3.3 适用范围广 四、总结 C20 引入了两个非常实用的函数模板: std::erase 和 std…...
阿里云oss视频苹果端无法播放问题记录
记录一下苹果端视频不可以播放的原因. 看了一下其他视频可以正常播放,但是今天客户发来的视频无法正常播放.咨询过阿里云售后给出的原因是编码格式过高. 需要调整编码格式为:baseline, 下面记录如何使用ffmpeg修改视频的编码格式. 下载文件(可从官方下载) 配置环境变量(系统变…...
10-MySQL-性能优化思路
1、优化思路 当我们发现了一个慢SQL的问题的时候,需要做性能优化,一般我们是为了提高SQL查询更快,一个查询的流程由下图的各环节组成,每个环节都会消耗时间,要减少消耗时候需要从各个环节都分析一遍。 2 连接配置优化…...
Postman之参数化详解
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 小伙伴们,好久不见呀,今天呢笔者想和大家聊聊postman参数化,在接口测试中,部分参数每次发送请求是唯一的数值&a…...
【c++深入系列】:类和对象详解(下)
🔥 本文专栏:c 🌸作者主页:努力努力再努力wz 💪 今日博客励志语录: 你的人生剧本,不是父母的续集,不是子女的前传,更不是朋友的外传——你是自己故事的主角 ★★★ 本文前…...
浅谈「分词」:原理 + 方案对比 + 最佳实践
在文本搜索、自然语言处理、智能推荐等场景中,「分词」 是一个基础但至关重要的技术点。无论是用数据库做模糊查询,还是构建搜索引擎,分词都是提高效率和准确度的核心手段。 🔍 一、什么是分词? 分词(Tok…...
第十八:GC 垃圾回收
2.1 三色标记# 灰色:对象已被标记,但这个对象包含的子对象未标记黑色:对象已被标记,且这个对象包含的子对象也已标记,gcmarkBits对应的位为1(该对象不会在本次GC中被清理)白色:对象…...
【微机及接口技术】- 第七章 可编程定时/计数器
文章目录 第一节 定时/计数器的概述一、定时与计数二、定时方法 第二节 可编程定时/计数器8254一、8254-2的基本功能二、8254的内部结构和外部引脚三、8254 的工作方式1. 方式0:计数到零产生中断方式2. 方式1:硬件可重触发单稳方式3. 方式2:速…...
MES生产工单管理系统,Java+Vue,含源码与文档,实现生产工单全流程管理,提升制造执行效率与精准度
前言: MES生产工单管理系统是制造业数字化转型的核心工具,通过集成生产、数据、库存等模块,实现全流程数字化管理。以下是对各核心功能的详细解析: 一、生产管理 工单全生命周期管理 创建与派发:根据销售订单或生产计…...
【区块链安全 | 第三十五篇】溢出漏洞
文章目录 溢出上溢示例溢出漏洞溢出示例漏洞代码代码审计1. deposit 函数2. increaseLockTime 函数 攻击代码攻击过程总结修复建议审计思路 溢出 算术溢出(Arithmetic Overflow),简称溢出(Overflow),通常分…...
【自记录】ubuntu命令行下禁用指定声卡
设备上内置了一块声卡,出于某些原因我希望禁用他。 通过arecord -l可以查看到该设备 $ arecord -l **** List of CAPTURE Hardware Devices **** card 0: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]Subdevices: 1/1Subdevice #0: subdevice…...
设计模式 Day 4:观察者模式(Observer Pattern)深度解析
在经历了前三天的对象创建型设计模式学习之后,今天我们开始进入行为型设计模式的探索之旅。行为型模式聚焦于对象之间的通信机制与协作方式,其中最经典且应用最广泛的就是——观察者模式(Observer Pattern)。本文将用8000字篇幅&a…...
`QTabWidget` 的标签页头设置样式,可以通过在 QSS 文件中定义 `QTabBar::tab` 的样式
要为 QTabWidget 的标签页头设置样式,可以通过在 QSS 文件中定义 QTabBar::tab 的样式来实现。以下是完整的代码示例和 QSS 文件内容,展示如何为标签页头设置背景颜色、文本颜色、悬停效果和选中效果。 ### **代码示例** cpp #include <QApplication…...
低代码开发革命:用 ZKmall开源商城可视化逻辑编排实现业务流程再造
ZKmall开源商城通过可视化逻辑编排引擎与低代码开发范式,重新定义了企业级电商业务流程的构建与优化方式。本文将从技术架构、核心能力、实践案例及行业价值等维度,解析其如何以"低代码流程引擎"组合拳实现业务流程再造的革命性突破。 一、低代…...
CAN外设
目录 1. CAN外设结构 1.1 CAN外设发送流程 1.2 CAN外设接收流程 1.3 发送接受配置位 2. CAN外设过滤器 2.1 过滤器配置 2.2 测试模式 2.3 工作模式 2.4 过滤器对应中断 2.5 错误处理和离线恢复 1. CAN外设结构 以STM32F103为例。以下是它的内部结构框图。 其具体发…...
(七)安卓开发中的状态列表图形(StateListDrawable)详解
在安卓开发中,**状态列表图形(StateListDrawable)**是一种非常实用的资源,它允许开发者根据视图的不同状态(如按下、聚焦、选中等)来动态显示不同的图像或颜色。这种机制在创建交互式用户界面时尤为重要&am…...
2023年蓝桥杯第十四届CC++大学B组真题及代码
目录 1A:日期统计 解析代码_暴力_正解 2B:01串的熵 解析代码_暴力_正解 3C:冶炼金属 解析代码_暴力_正解 4D:飞机降落 解析代码_暴力dfs_正解 5E:接龙数列 解析代码_dp_正解 6F:岛屿个数 解析代…...
odo18实施——销售-仓库-采购-制造-制造外包-整个流程自动化单据功能的演示教程
安装模块 安装销售 、库存、采购、制造模块 2.开启外包功能 在进入制造应用点击 配置—>设置 勾选外包,点击保存 添加信息 一、添加客户信息 点击到销售应用 点击订单—>客户 点击新建 创建客户1,及其他客户相关信息,点…...
c++造轮子之REACTOR实战
本文实现的为单reactor 多线程(base) 非核心库 InetAddress 这个库简单而言 无疑是设置ip地址和端口 class InetAddress { public:struct sockaddr_in addr;socklen_t addr_len;InetAddress();InetAddress(const char* ip, uint16_t port);~InetAddress(); };具体而言: Ine…...
【Easylive】Elasticsearch搜索组件详解
【Easylive】项目常见问题解答(自用&持续更新中…) 汇总版 一、Elasticsearch基础介绍 Elasticsearch(简称ES)是一个分布式、RESTful风格的搜索和分析引擎,基于Apache Lucene构建。在视频平台中,它主要用于: 全…...
基于AT89C51单片机的加减乘除液晶计算机设计
点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/90574816?spm1001.2014.3001.5503 功能介绍: 可进行最高四位数的加减乘除运算,除法运算保留小数点后四位;4*4矩阵按键输入&…...
先进制造aps专题三十三 开源aps产品,frepple和dream对比分析
开源的两个aps产品,frepple和dream对比分析 frepple开源的基本不能用,第一它甘特图没开源,而且甘特图不允许你手工个修改,你想把它当成手工甘特图用也不行,第二,算法强制倒排,很少企业是倒排 …...
Vue3.2 项目打包成 Electron 桌面应用
本文将详细介绍如何将基于 Vue3.2 的项目打包成 Electron 桌面应用。通过结合 Electron 和 Vue CLI 工具链,可以轻松实现跨平台桌面应用的开发与发布。 1. 项目结构说明 项目主要分为以下几个部分: electron/main.js:Electron 主进程文件。…...
第16届蓝桥杯单片机模拟试题Ⅰ
试题 代码 sys.h #ifndef __SYS_H__ #define __SYS_H__#include <STC15F2K60S2.H> //onewire.c float getT(); //sys.c extern unsigned char UI; extern bit touch_mode; extern float jiaozhun; extern float canshu; extern float temper; void init74hc138(unsigned…...
ES:geoip_databases
如何查看 .geoip_databases 的内容 在Elasticsearch中,.geoip_databases 是一个特殊的索引,用于存储GeoIP数据库文件。这些文件通常用于地理信息的丰富(GeoIP enrichment)。以下是如何查看和管理这些数据库文件的方法:…...
企业级开发SpringBoost玩转Elasticsearch
案例 Spring Boot 提供了 spring-data-elasticsearch 模块,可以方便地集成 Elasticsearch。 下面我们将详细讲解如何在 Spring Boot 中使用 Elasticsearch 8,并提供示例代码。 1. 添加依赖: 首先,需要在 pom.xml 文件中添加 spring-data-e…...
边缘计算网关作用
一、数据采集与预处理 边缘计算网关作为物联网系统的“数据入口”,能够连接各种传感器和设备,实时采集数据。在数据传输到云端之前,它会对数据进行清洗、过滤和聚合,剔除重复、无效或冗余的信息,只将有价值的数据上传…...
利用本地 Express Web 服务解决复杂的 Electron 通信链路的问题
背景 Web 服务对前端同学来说并不陌生,你们开发其他前端界面请求的后端接口就是 Web 服务,你们 npm run dev启动的也是一个本地的 Web 服务,前端的 js,html,css 都有从这个服务上拉取到的资源。 我们在开发 Electron…...
《自然-计算科学》诚邀您投稿计算社会科学研究(computational social science)
李升伟 编译 近年来,运用计算方法和工具来深化对社会科学长期议题理解的"计算社会科学"发展迅猛。这一增长主要得益于社交媒体数据、移动通信数据、数字化图书与历史档案、医疗记录等海量数据的涌现,这些资源不仅为验证现有社会科学理论提供了…...
【SPSS/EXCEl】主成分分析构建__综合评价指数
学习过程中实验操作的记录 1.数据准备和标准化: (1)区分正负相关性:判断每个因子是正向指标还是负向指标,计算每个的最大值和最小值 (2) 标准化: Min-Max标准化 Min-Max标准化(最大最小值法): 将数据映射到指定的区间ÿ…...
#node.js后端项目的部署相关了解
熟悉 Spring Boot 的 java -jar 启动方式,那咱们就用类比 实战方式,来彻底搞懂: 🚀 Node.js 后端项目的 部署 & 启动方式 ✅ 和 Spring Boot 的 java -jar xxx.jar 一样,Node.js 也可以一句命令启动,而…...
程序化广告行业(69/89):DMP与PCP系统核心功能剖析
程序化广告行业(69/89):DMP与PCP系统核心功能剖析 在数字化营销浪潮中,程序化广告已成为企业精准触达目标受众的关键手段。作为行业探索者,我深知其中知识的繁杂与重要性。一直以来,都希望能和大家一同学习…...
基于Python的二手房数据挖掘与可视化深度分析
一、技术框架与数据概况 1.1 技术栈构成 import pandas as pd # 数据操作(v1.3.5) import numpy as np # 数值计算(v1.21.6) from pyecharts.charts import * # 交互式可视化(v1.9.1) from sklearn.preprocessing import StandardScaler # 数据标准化(可选扩展) …...
linux第三次作业
1、将你的虚拟机的网卡模式设置为nat模式,给虚拟机网卡配置三个主机位分别为100、200、168的ip地址 2、测试你的虚拟机是否能够ping通网关和dns,如果不能请修改网关和dns的地址 3、将如下内容写入/etc/hosts文件中(如果有多个ip地址则写多行&…...
C#编写HttpClient爬虫程序示例
要写一个使用C#和HttpClient的爬虫程序。首先,我需要了解HttpClient的基本用法。HttpClient是用来发送HTTP请求和接收响应的类,对吧?我记得在C#中使用它的时候需要注意一些事情,比如最好使用单例实例,而不是频繁创建和…...
关于Spring MVC在无注解情况下通过参数名匹配获取请求参数的详细说明,包含代码示例和总结表格
以下是关于Spring MVC在无注解情况下通过参数名匹配获取请求参数的详细说明,包含代码示例和总结表格: 1. 核心机制 Spring MVC通过参数名匹配实现无注解参数绑定: 条件:方法参数名需与请求参数(查询参数、表单参数&a…...
数智读书笔记系列027:《医疗健康大数据治理》构建智慧医疗的核心基石
一、图书介绍: 1.1 书籍基本信息 在当今数字化技术飞速发展的背景下,医疗行业正经历着前所未有的变革。信息化、智能化、数据驱动的趋势正在深入到医疗服务的各个环节,推动着医疗健康大数据成为医疗行业发展的核心资产。在这样的时代背景下,《医疗健康大数据治理》这本书应…...
Wayland介绍
Wayland 是一种现代化的显示服务器协议,旨在替代传统的 X Window System(X11),为 Linux 和类 Unix 系统提供更高效、安全的图形显示管理。以下是其核心要点: 1. 基本概念 显示服务器协议:Wayland 定义了客户…...
dockerTeskTop安装dify及使用deepseek
配置 在这之前,要把模型运行一起,我这里是 PS C:\Users\Administrator> ollama run deepseek-r1:8b 模型名称一定要写对 如果添加失败,参考 dify 1.0.1无法在ollama下新增LLM模型 - 何辉煌 - 博客园...
解释 Git 的基本概念和使用方式
Git 是一个分布式版本控制系统,用于跟踪文件的变化并协作开发项目。下面是 Git 的一些基本概念和使用方式: 仓库(Repository):Git 仓库是用来存储项目文件的地方,可以在本地计算机上创建一个本地仓库&#…...
【区块链安全 | 第三十三篇】备忘单
文章目录 备忘单操作符优先级备忘单ABI 编码和解码函数bytes 和 string 的成员Address 的成员区块与交易属性校验和断言数学和加密函数合约相关类型信息函数可见性说明符修饰符备忘单 操作符优先级备忘单 以下是操作符的优先级顺序,按评估顺序列出: 优先级描述操作符1后缀递…...
MyBatis的缓存、逆向工程、使用PageHelper、使用PageHelper
一、MyBatis的缓存 缓存:cache 缓存的作用:通过减少IO的方式,来提高程序的执行效率。 mybatis的缓存:将select语句的查询结果放到缓存(内存)当中,下一次还是这条select语句的话,直…...
GS+:地统计分析与空间插值工具
大家好,今天为大家介绍的软件是GS:一款用于地统计分析与空间数据处理的软件。与ArcGIS相比的话,它更适合专注于地质统计学分析的用户,尤其是需要对半方差函数进行深入分析和调整的场景下面。我们将从软件的主要功能、支持的系统、…...
C++类型转换详解
目录 一、内置 转 内置 二、内置 转 自定义 三、自定义 转 内置 四、自定义 转 自定义 五、类型转换规范化 1.static_case 2.reinterpret_cast 3.const_cast 4.dynamic_cast 六、RTTI 一、内置 转 内置 C兼容C语言,在内置类型之间转换规则和C语言一样的&am…...
scala-集合2
可变数组 定义变长数组 val arr01 ArrayBuffer[Any](3, 2, 5) (1)[Any]存放任意数据类型 (2)(3, 2, 5)初始化好的三个元素 (3)ArrayBuffer 需要引入 scala.collection.mutable.ArrayBuffer 案例实操 Arra…...
Clang编译器优化选项
Clang 作为 C/C 编译器,提供了丰富的优化选项,以下是主要的优化相关选项分类和说明: 1. 优化级别(通用选项) 选项说明-O0默认级别,禁用所有优化,用于调试。-O1基础优化(代码大小和执…...
Java文件流操作 - 【Guava】IO工具
引言 Guava 使用术语 流来表示可关闭的,并且在底层资源中有位置状态的 I/O 数据流。字节流对应的工具类为 ByteSterams,字符流对应的工具类为 CharStreams。 Guava 中为了避免和流直接打交道,抽象出可读的 源 source 和可写的 汇 sink 两个概…...