作业帮 > 综合 > 作业

C语言,解二元一次方程的根时需要判断b×b-4×a×c<0,还是 b×b-4×a×c>=0.谭浩强的书写的代码段是:di

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/06/25 22:54:24
C语言,解二元一次方程的根时需要判断b×b-4×a×c<0,还是 b×b-4×a×c>=0.谭浩强的书写的代码段是:disc=b*b-4*a*c; if(disc<0) 我们学校的书是这样写的:disc=b*b-4*a*c; if(fabs(disc)<=1e-6); 到底是我们书是对的还是谭浩强是对的?再做 b×b-4×a×c判断时 fabs(disc)<=1e-6功能结果是否也可以等价与 fabs(disc)<1e-6?
C语言,解二元一次方程的根时需要判断b×b-4×a×c<0,还是 b×b-4×a×c>=0.谭浩强的书写的代码段是:di
应该都是对的,应该考虑到变量a,b,c的类型,如果都是整型,谭浩强是对的,如果是浮点型,你们的是对的,你们的书是咋定义的?fabs函数是对浮点型求绝对值,最后一个问题不好回答,除非把代码都贴出来,这么几行看不出来的.
再问: 谭浩强的定义的是double,我们定义的是float
再问: 我下午发代码
再答: 这就对了啊,double是8个字节的整型,float是浮点型,两个都是对的。
再问: 神马啊长整型不是long吗,double是双精浮点
再答: 是搞错了,代码贴出来瞧瞧,看看为什么不直接比较 b*b 和 4*a*c 大小
再问: 我们学校的
再问:
再问: 老谭的
再问:
再答: 你们学校的认为 b*b 与 4*a*c 的差异要大于1*10^-6(即0.000001)才算是有差别,否则认为是相等的。这么来看的话,你的最后一个问题“fabs(disc)<=1e-6功能结果是否也可以等价与 fabs(disc)<1e-6?”,这个是认为定义的,如果两个数的差异正好等于0.000001,一个认为相等,一个认为不等。 你们学校的算法把 disc = b*b - 4*a*c 的结果分为三部分处理: 1、两者差异小于(也可以加一个等于)0.000001,则认为disc是等于0,有一个实根 2、disc大于0.000001,有两个实根 3、disc小于-0.000001,虚根 计算机解方程用的是近似求解,类似于逐步逼近,要设置精确度的,你们学校的方法更实用。
再问: 我们学校用TC,可我提前学或者说超前学用的是VC++6.0,是不是,判断是0还是1*10e-6跟这个版本差异也有关系
再问: 判断差异跟我自己与学校编译器不一样有关系吗?
再答: 好久前用过TC,不过判断是0用什么和版本以及编译器无关。
再问: 谢啦(^o^)/