[英]Floating Point Exception in C++ Program
#include <iostream>
#include <string>
using namespace std;
int main()
{
int num1, num2; // numerator
int den1, den2; // denominator
cin >> num1 >> den1 >> num2 >> den2;
if (den1<=0 || den2<=0)
cout << "problem could not be solved because denominator is zero and division by zero is not defined" << endl;
else
if ((num1/den1)+(num2/den2))
cout << num1 << "/" << den1 << " + " << num2 << "/" << den2 << " = " << ((num1*den2)+ (den1*num2)) << "/" << (den1*den2) << endl;
else
if ((num1/den1)-(num2/den2))
cout << num1 << "/" << den1 << " - " << num2 << "/" << den2 << " = " << ((num1*den2)-(den1*num2)) << "/ " << (den1*den2) << endl;
else
if ((num1/den1)*(num2/den2))
cout << num1 << "/" << den1 << " * " << num2 << "/" << den2 << " = " << (num1*num2) << "/ " << (den1*den2) << endl;
else
if ((num1/den1)/(num2/den2) && num2 != 0)
cout << num1 << "/" << den1 << " * " << num2 << "/" << den2 << " = " << (num1*den2) << "/ " << (den1*num2) << endl;
else
if ((num1/den1)/(num2/den2) && num2==0)
cout << num1 << "/" << den1 << " * " << num2 << "/" << den2 << " could not be solved because division by zero is not defined" << endl;\
return 0;
}
Hey guys I keep getting a floating exception when I run this program. 嗨,伙计们,当我运行此程序时,我总是收到一个浮动异常。 I really can't figure out what the problem is.
我真的不知道是什么问题。 Help is extremely appreciated.
非常感谢您的帮助。
The problem is on these lines: 问题出在以下几行:
if ((num1/den1)/(num2/den2) && num2 != 0)
cout << num1 << "/" << den1 << " * " << num2 << "/" << den2 << " = " << (num1*den2) << "/ " << (den1*num2) << endl;
else
if ((num1/den1)/(num2/den2) && num2==0)
cout << num1 << "/" << den1 << " * " << num2 << "/" << den2 << " could not be solved because division by zero is not defined" << endl;\
The arguments to &&
are processed left-to-right. &&
的参数从左到右处理。 So if num2
is zero
, you'll try to do the division before you test num2 != 0
; 因此,如果
num2
zero
,则您将在测试num2 != 0
之前尝试进行除法; so you need to perform the zero test first. 因此您需要先执行零测试。 You also need to test whether
num2/den2
is zero, not just num2
, because the division could round down to zero even if num2
is not zero. 您还需要测试
num2/den2
是否为零,而不仅仅是num2
,因为即使num2
不为零,除法也可以舍入为零。
if (num2/den2 != 0 && (num1/den1)/(num2/den2))
cout << num1 << "/" << den1 << " * " << num2 << "/" << den2 << " = " << (num1*den2) << "/ " << (den1*num2) << endl;
else
cout << num1 << "/" << den1 << " * " << num2 << "/" << den2 << " could not be solved because division by zero is not defined" << endl;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.