求大神指点,这个应该怎么改? 使用c语言程序求一元二次方程的根
4个回答
展开全部
林瑞老师的《高质量cc++编程》说了:
“
千万要留意,无论是float还是double类型的变量,都有精度限制。所以一定要避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。
假设浮点变量的名字为x,应当将
if (x == 0.0) //隐含错误的比较
转化为
if ((x>=-EPSINON) &&(x<=EPSINON))
其中EPSINON是允许的误差(即精度)。
”
所以,这里的d和0的比较应该改成比较精度
比如改成
if(d >0.00000001)
再者说,a、b、c三个系数可以给定义成整数型的,因即使是float类型的,也可以在方程两边同时乘以相同的系数而转化成整形的,对吧?
所以,我建议把a、b、c、d四个变量定义成整型变量。这样的话就不存在判断判别式d的问题了。
望采纳。
“
千万要留意,无论是float还是double类型的变量,都有精度限制。所以一定要避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。
假设浮点变量的名字为x,应当将
if (x == 0.0) //隐含错误的比较
转化为
if ((x>=-EPSINON) &&(x<=EPSINON))
其中EPSINON是允许的误差(即精度)。
”
所以,这里的d和0的比较应该改成比较精度
比如改成
if(d >0.00000001)
再者说,a、b、c三个系数可以给定义成整数型的,因即使是float类型的,也可以在方程两边同时乘以相同的系数而转化成整形的,对吧?
所以,我建议把a、b、c、d四个变量定义成整型变量。这样的话就不存在判断判别式d的问题了。
望采纳。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
哪里有误,是要保留几位小数?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询