我是靠谱客的博主 爱笑大门,最近开发中收集的这篇文章主要介绍C语言 输出INF问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我的主页: isfantasy.com

本人在编写以下小程序,当输入数据n、m大于65536时,发现无论如何设置sum的数据类型,输出sum的值都为INF:

 

double fun(int n,int m){
int i;
double sum = 0;
for(;n <= m;n++){
sum += 1.0 / (n * n);
}
return sum;
}
int main(){
int n,m,i;
int num;
double f[100];
int flag = 0;
num = 1;
scanf("%d %d",&n,&m);
while(n != 0 || m != 0){
f[flag++] = fun(n,m);
scanf("%d %d",&n,&m);
}
for(i = 0;i < flag;i++){
printf("Case %d: %.5lfn",num++,f[i]);
}
return 0;
}


经查阅各种资料,发现INF含义如下:

  1. INF表示超出浮点数表示范围(值溢出);
  2. 当值很大或很小时会输出INF:1.0/0.0,-1.0/0.0,0.0+inf=inf;log(0);
  3. 得到inf时就查看是否有溢出或者除以0;
  4. 可用自定义函数 :
     int isFiniteNumber(double d) {return (d<=DBL_MAX&&d>=-DBL_MAX);}

    来判断d是否为一个finite数;

本题处理方法:

 

double fun(int n,int m){
  int i;
  double sum = 0;
  for(;n <= m;n++){
    sum += 1.0 / n / n;
  }
  return sum;
}

扩展:


         另一个C语言与INF类似的是输出NAN,含义表示对浮点数进行了未定义的操作,例:对负数开方,对负数求对数。可用自定义函数:

int isNumber(double d){return (d==d);}

来判断d是否为nan,若d是nan则返回0,否则返回非零值。

最后

以上就是爱笑大门为你收集整理的C语言 输出INF问题的全部内容,希望文章能够帮你解决C语言 输出INF问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部