0

0

C++ sqrt函数使用教程_C++平方根计算与异常处理

下次还敢

下次还敢

发布时间:2025-11-30 05:17:32

|

1172人浏览过

|

来源于php中文网

原创

C++中sqrt函数用于计算平方根,需包含头文件,支持浮点型和整型输入;传入负数会引发域错误,应提前判断非负性并检查NAN;浮点结果存在精度误差,建议使用EPSILON进行近似比较;通过输入验证与条件处理可实现安全的平方根计算。

c++ sqrt函数使用教程_c++平方根计算与异常处理

C++ 中的 sqrt 函数用于计算一个数的平方根,是数学运算中常用的函数之一。它定义在 头文件中,适用于浮点型和整型数据。本文将介绍如何正确使用 sqrt 函数,处理常见异常情况,并提供实用示例。

包含头文件与基本用法

要使用 sqrt 函数,必须包含标准数学库头文件 。函数原型如下:

double sqrt(double x);

支持 float、double 和 long double 类型,也可传入整数,会自动转换为 double。

示例代码:

立即学习C++免费学习笔记(深入)”;

#include 
#include 
using namespace std;

int main() { double num = 25.0; double result = sqrt(num); cout << "√" << num << " = " << result << endl; // 输出:√25 = 5 return 0; }

处理负数输入与域错误

sqrt 函数不允许对负数开平方。若传入负数,将产生域错误(domain error),返回 NAN(非数字)。

为了避免程序崩溃或输出异常结果,应提前判断输入是否非负。

Soundful
Soundful

Soundful Ai音乐生成器,只需一个按钮即可生成免版税曲目

下载

推荐做法:

  • 使用条件语句检查数值是否大于等于 0
  • 结合 std::isnan() 检查返回值是否有效

示例:

double num = -4.0;
if (num >= 0) {
    double result = sqrt(num);
    cout << "√" << num << " = " << result << endl;
} else {
    cout << "错误:不能对负数开平方根!" << endl;
}

浮点精度与比较技巧

由于浮点数存在精度误差,直接比较 sqrt 结果可能不准确。例如,sqrt(2) 是无限小数,存储时会被截断。

建议使用误差范围(epsilon)进行近似比较:

#include 
#include 
#include 

const double EPS = 1e-9; double val = sqrt(2) * sqrt(2); if (abs(val - 2.0) < EPS) { cout << "近似相等" << endl; }

完整示例:安全的平方根计算器

下面是一个带输入验证和异常提示的小程序

#include 
#include 
using namespace std;

int main() { double input; cout << "请输入一个非负数:"; cin >> input;

if (cin.fail()) {
    cout << "输入无效!请输入数字。" << endl;
    return 1;
}

if (input < 0) {
    cout << "无法计算负数的平方根。" << endl;
    return 1;
}

double root = sqrt(input);
cout << "√" << input << " ≈ " << root << endl;
return 0;

}

基本上就这些。掌握 sqrt 的使用和边界处理,能有效避免运行时错误,提升程序稳定性。注意始终验证输入并合理处理浮点精度问题。

相关专题

更多
css中float用法
css中float用法

css中float属性允许元素脱离文档流并沿其父元素边缘排列,用于创建并排列、对齐文本图像、浮动菜单边栏和重叠元素。想了解更多float的相关内容,可以阅读本专题下面的文章。

573

2024.04.28

C++中int、float和double的区别
C++中int、float和double的区别

本专题整合了c++中int和double的区别,阅读专题下面的文章了解更多详细内容。

100

2025.10.23

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

188

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

288

2023.10.25

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

53

2025.08.29

C++中int、float和double的区别
C++中int、float和double的区别

本专题整合了c++中int和double的区别,阅读专题下面的文章了解更多详细内容。

100

2025.10.23

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

9

2026.01.22

html编辑相关教程合集
html编辑相关教程合集

本专题整合了html编辑相关教程合集,阅读专题下面的文章了解更多详细内容。

53

2026.01.21

三角洲入口地址合集
三角洲入口地址合集

本专题整合了三角洲入口地址合集,阅读专题下面的文章了解更多详细内容。

28

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Django 教程
Django 教程

共28课时 | 3.4万人学习

Excel 教程
Excel 教程

共162课时 | 13万人学习

Kotlin 教程
Kotlin 教程

共23课时 | 2.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号