鱼C论坛

 找回密码
 立即注册
查看: 2017|回复: 3

[已解决]求一元二次方程的根,但是输入值后,实数部分显示的是-0,怎么让它显示0?

[复制链接]
发表于 2022-6-17 01:40:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import math
k = input().split()
a = float(k[0])
b = float(k[1])
c = float(k[2])
h = h1 = h2 = h3 = 0
if b*b == 4 * a * c:
    h = -b + math.sqrt(b*b-4*a*c)
    h = h / (2*a)
    print("x1=x2=%.5f"%h)
elif b*b > 4 * a * c:
    h1 = -b + math.sqrt(b*b-4*a*c)
    h1 = h1 / (2*a)
    h2 = -b - math.sqrt(b*b-4*a*c)
    h2 = h2 / (2*a)
    print("x1=%.5f;x2=%.5f"%(h1,h2))
elif b*b < 4 * a * c:
    h1 = -b / (2*a)
    h2 = math.sqrt(4*a*c-b*b)
    h2 = h2 / (2*a)
    print("x1=%.5f+%.5fi;x2=%.5f-%.5fi"%(h1,h2,h1,h2))
    #a,b,c是三个系数,h1,h2分别是两个解
输入1 0 7.3之后,实数部分显示的是-0.00000,怎么变成0.00000呢?
最佳答案
2022-6-17 01:53:02
本帖最后由 临时号 于 2022-6-17 01:58 编辑

判断实数部分的值是否为0,如果是,则不考虑实数部分的符号
  1. import math
  2. k = input().split()
  3. a = float(k[0])
  4. b = float(k[1])
  5. c = float(k[2])
  6. h = h1 = h2 = h3 = 0
  7. if b*b == 4 * a * c:
  8.     h = -b + math.sqrt(b*b-4*a*c)
  9.     h = h / (2*a)
  10.     if h == 0:
  11.         h = abs(h)
  12.     print("x1=x2=%.5f"%h)
  13. elif b*b > 4 * a * c:
  14.     h1 = -b + math.sqrt(b*b-4*a*c)
  15.     h1 = h1 / (2*a)
  16.     h2 = -b - math.sqrt(b*b-4*a*c)
  17.     h2 = h2 / (2*a)
  18.     if h1 == 0:
  19.         h1 = abs(h1)
  20.     if h2 == 0:
  21.         h2 = abs(h2)
  22.     print("x1=%.5f;x2=%.5f"%(h1,h2))
  23. elif b*b < 4 * a * c:
  24.     h1 = -b / (2*a)
  25.     h2 = math.sqrt(4*a*c-b*b)
  26.     h2 = h2 / (2*a)
  27.     if h1 == 0:
  28.         h1 = abs(h1)
  29.     if h2 == 0:
  30.         h2 = abs(h2)
  31.     print("x1=%.5f+%.5fi;x2=%.5f-%.5fi"%(h1,h2,h1,h2))
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-6-17 01:53:02 | 显示全部楼层    本楼为最佳答案   
本帖最后由 临时号 于 2022-6-17 01:58 编辑

判断实数部分的值是否为0,如果是,则不考虑实数部分的符号
  1. import math
  2. k = input().split()
  3. a = float(k[0])
  4. b = float(k[1])
  5. c = float(k[2])
  6. h = h1 = h2 = h3 = 0
  7. if b*b == 4 * a * c:
  8.     h = -b + math.sqrt(b*b-4*a*c)
  9.     h = h / (2*a)
  10.     if h == 0:
  11.         h = abs(h)
  12.     print("x1=x2=%.5f"%h)
  13. elif b*b > 4 * a * c:
  14.     h1 = -b + math.sqrt(b*b-4*a*c)
  15.     h1 = h1 / (2*a)
  16.     h2 = -b - math.sqrt(b*b-4*a*c)
  17.     h2 = h2 / (2*a)
  18.     if h1 == 0:
  19.         h1 = abs(h1)
  20.     if h2 == 0:
  21.         h2 = abs(h2)
  22.     print("x1=%.5f;x2=%.5f"%(h1,h2))
  23. elif b*b < 4 * a * c:
  24.     h1 = -b / (2*a)
  25.     h2 = math.sqrt(4*a*c-b*b)
  26.     h2 = h2 / (2*a)
  27.     if h1 == 0:
  28.         h1 = abs(h1)
  29.     if h2 == 0:
  30.         h2 = abs(h2)
  31.     print("x1=%.5f+%.5fi;x2=%.5f-%.5fi"%(h1,h2,h1,h2))
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-17 08:53:00 From FishC Mobile | 显示全部楼层
兄弟,好奇问一下,为什么系数有小数?一元二次方程系数不是都是整数吗?ax^2 + bx + c = 0,系数:a、b、c
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-17 09:09:50 From FishC Mobile | 显示全部楼层
本帖最后由 傻眼貓咪 于 2022-6-17 09:41 编辑

  1. class Equation:
  2.         def __init__(self, a, b, c):
  3.                 self.a = a
  4.                 self.b = b
  5.                 self.c = c
  6.        
  7.         def roots(self):
  8.                 # 判别式 D
  9.                 D = (self.b * self.b) - (4 * self.a * self.c)
  10.                 if not D: # D = 0
  11.                         return (- self.b) / (2 * self.a)
  12.                 elif D < 0: # D < 0
  13.                         real = (- self.b) / (2 * self.a)
  14.                         imag = ((-D) ** .5) / (2 * self.a)
  15.                         return ("%d+%di"%(real, imag), "%d-%di"%(real, imag))
  16.                 else: # D > 0
  17.                         x1 = (- self.b + (D ** .5)) / (2 * self.a)
  18.                         x2 = (- self.b - (D ** .5)) / (2 * self.a)
  19.                         return x1, x2
  20.                        
  21. a, b, c = map(int, input().split()) # 三个系数
  22. E = Equation(a, b, c)
  23. print("根:", *E.roots())
复制代码
  1. 1 -3 10
  2. 根: 1+2i 1-2i

  3. 1 -3 -10
  4. 根: 5.0 -2.0
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-22 19:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表