C++编程的时候提示Floating point exception

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++编程的时候提示Floating point exception相关的知识,希望对你有一定的参考价值。

刚学啊,不清楚错在了哪里,求大神。题目是
题目描述
每门课的成绩分为A、B、C、D、F五个等级,为了计算平均绩点,规定A、B、C、D、F分别代表4分、3分、2分、1分、0分。
输入格式
有多组测试样例。每组输入数据占一行,由一个或多个大写字母组成,字母之间由空格分隔。
输出
每组输出结果占一行。如果输入的大写字母都在集合{A,B,C,D,F}中,则输出对应的平均绩点,结果保留两位小数。否则,输出“Unknown”。
我写的是
#include<iostream>
#include<iomanip>
using namespace std;
int main()

char grade;
int A=4;
int B=3;
int C=2;
int D=1;
int F=0;
int count=0;
int sum=0;
while(cin>>grade&&grade!=' ')


if (grade=='A')
sum=sum+4;
count++;
else if(grade=='B')
sum=sum+3;
count++;
else if(grade=='C')
sum=sum+2;
count++;
else if(grade=='D')
sum=sum+1;
count++;
else if(grade=='F')
sum=sum+0;
count++;
elsecout<<"Unknown";


float num=sum/count;
cout<<setprecision(2)<<num<<endl;
return 0;

#include<iostream>
#include<iomanip>
using namespace std;
int main()

 char grade;
 int A=4;
 int B=3;
 int C=2;
 int D=1;
 int F=0;
 int count=0;
 int sum=0;
 while(cin>>grade&&grade!=0x20 &&grade!=57)//输入9退出循环计算出结果
  
  if (grade==4+48)sum=sum+4;count++;
  else if(grade==3+48)sum=sum+3;count++;
  else if(grade==2+48)sum=sum+2;count++;
  else if(grade==1+48)sum=sum+1;count++;
  else if(grade==0+48)sum=sum+0;count++;
  elsecout<<"Unknown";
  
 
 float num=(float)sum/count;
 cout<<setprecision(2)<<num<<endl;
 return 0;

参考技术A while(cin>>grade&&grade!=' ')把' '换成别的,例如'0'

UVa 11809 - Floating-Point Numbers

十进制转二进制存储需要几位

m*2^e=a*10^b;
log10(m)+e*log10(2)=log10(a)+b;
m=1-2^(-i-1)
e=2^j-1

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
double f[10][35];
char s[100];
double a,c;
int b;
void fuc()
{
    double m=1,e;
    for(int i=0;i<=9;++i)
    {
        m/=2;
        e=1;
        for(int j=0;j<=30;++j)
        {
            f[i][j]=log10(1-m)+log10(2)*(e-1);//用log存储 
            e*=2; 
        }
    }
}
int main()
{
    fuc();
    while(~scanf("%s",s)&&strcmp(s,"0e0"))
    {
        s[17]= ;
        sscanf(s,"%lf%d",&a,&b);
        c=log10(a)+b; 
        for(int i=0;i<=9;i++)
        {
            for(int j=0;j<=30;j++)
            {
                if(fabs(c-f[i][j])<1e-7)
                {
                    cout<<i<< <<j<<endl;
                    break;
                }
            }
        }
    }
    return 0;
} 

 

以上是关于C++编程的时候提示Floating point exception的主要内容,如果未能解决你的问题,请参考以下文章

安装windows优化大师,出现“floating point division by zero”错误?

floating point division by zero是啥意思?哪位高手能帮助我翻译一下,谢谢

我打开有些网页会出现invalid floating point operation 这要怎么解决?

fluent中计算出现floating point exception是啥原因怎么解决

新手学Python之学习官网教程(十五: Floating Point Arithmetic: Issues and Limitations)

测试浮点相等性。 (FE_FLOATING_POINT_EQUALITY)