关于 NAN 和 INF
2021/10/11 6:17:53
本文主要是介绍关于 NAN 和 INF,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
问题:
#include <stdio.h> #include <math.h> int main() { double a, b, c, x1, x2, i1, i2, san;//san求根的▲ x1<x2 scanf("%lf %lf %lf", &a, &b, &c); if (a == 0 && b == 0 && c != 0) printf("Not An Equation"); if (a == 0 && b == 0 && c == 0) printf("Zero Equation"); san = b * b - 4 * a * c; if (a == 0 && b != 0 && c != 0) { x1 = -c / b; printf("%.2f", x1); } //if (2 * a != 0) { if (san == 0 && a != 0) { x1 = -b / (2 * a); printf("%.2f", x1); } else if (san > 0) { x1 = (-b - sqrt(san)) / (2 * a); x2 = (-b + sqrt(san)) / (2 * a); printf("%.2f\n%.2f", x2, x1); } else { i1 = sqrt(-san) / (2 * a); x1 = x2 = -b / (2 * a); if (x1 != 0)printf("%.2f+%.2fi\n%.2f-%.2fi", x1, i1, x2, i1); else { x1 = -x1; x2 = -x2; printf("%.2f+%.2fi\n%.2f-%.2fi", x1, i1, x2, i1); } } return 0; }
当输入0 0 0 时,按理应该输出“Zero Equation”
但是这个代码输出的是“Zero Equation-nan(ind)+-nan(ind)i-nan(ind)--nan(ind)i” 后面多了很多奇奇怪怪的东西
INF表示“无穷大”,是infinite的缩写。
NAN表示“无效数字”,是Not a number的缩写。 也就是说代码中发生了除以0的情况
当输入0 0 0,这时的san为0,进入了最后的那个else{ }里面
else { x1 = -x1; x2 = -x2; printf("%.2f+%.2fi\n%.2f-%.2fi", x1, i1, x2, i1); }
要输出 x1 i1 x2 i2 但是a=0
i1 = sqrt(-san) / (2 * a); x1 = x2 = -b / (2 * a);
x1 x2 i1 i2都不存在 且printf中x1 x2 对应的是%d i1 i2对应的是%.2f 所以就会输出“ nan ” 和 “ inf ” 所以在前面要用if语句来限定一下a!=0
这篇关于关于 NAN 和 INF的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01后台管理开发学习:新手入门指南
- 2024-11-01后台管理系统开发学习:新手入门教程
- 2024-11-01后台开发学习:从入门到实践的简单教程
- 2024-11-01后台综合解决方案学习:从入门到初级实战教程
- 2024-11-01接口模块封装学习入门教程
- 2024-11-01请求动作封装学习:新手入门教程
- 2024-11-01登录鉴权入门:新手必读指南
- 2024-11-01动态面包屑入门:轻松掌握导航设计技巧
- 2024-11-01动态权限入门:新手必读指南
- 2024-11-01动态主题处理入门:新手必读指南