C语言求一元二次方程的根为什么不直接写delta>0,而写成delta>1e-12

Python018

C语言求一元二次方程的根为什么不直接写delta>0,而写成delta>1e-12,第1张

如果判断是否相等,对于浮点数而言,由于计算精度的限制及进制转换的误差,计算结果会存在误差。这时,如果直接判断是否等于零,可能会造成计算时间过长,没有必要,严重时可能还会造成死循环。

如果是不含等号的比较,两者差别不大。写成delta>1e-12可以理解成小于1e-12的就认为是0,和前面说的是一个道理。

判断条件 (delta=0) 是个赋值语句而不是判断语句。

因此会先给delta赋值为0,之后判断delta是否为0,如果不为0则输出x1=x2,如果为0则输出x1!=x2。由于delta已经被错误地赋值为0了,所以最后输出的就是 x1!=x2。