python - 二次公式:python 将浮点数视为字符串
问题描述
我正在制作一个程序,要求用户输入 a、b 和 c 的值,然后使用二次公式计算根。我遇到的唯一问题是 python 将 a 和平方根项视为两个字符串,实际上并没有添加它们。它们之间的 + 被打印出来。
这是我的代码:
import cmath
def cubic_formula(a, b, c):
print("x1: " + str((-b-cmath.sqrt(b**2-4*a*c))/(2*a)))
print("x2: " + str((-b+cmath.sqrt(b ** 2 - 4 * a * c)) / (2 * a)))
a = float(input("a: ")) b = float(input("b: ")) c = float(input("c: "))
cubic_formula(a, b, c)
这是输出,说明了我刚刚描述的问题:
我不知道如何使加号导致两个数字的实际相加。删除 str() 并且在 print() 中没有字符串并没有改变任何东西。
解决方案
你看到的是复数,而不是字符串。当判别式b*b-4*a*c
为负时,解决方案没有实值。虚数单位在 Python 中表示,复数j
在 Python 中打印(a+bj)
。您可能想在计算之前检查判别式是否为正,并使用math.sqrt
返回浮点数的cmath.sqrt
函数,而不是返回复数的函数。
另请注意,您调用了该函数cubic_formula
,但正在计算quadratic_formula
。
推荐阅读
- arrays - 将包含标签的简单描述数据转换为数组
- mysql - 没有以变量作为 json 键获取 Mysql json 值
- java - 无法运行 ant clean jar ide-dependencies 命令
- angular6 - Angular 6 和 bpmn-properties-panel
- twilio - 如何在 Twilio 中通过编程方式设置长代码?
- javascript - 如何使用formData使用ajax从2个不同的文件输入中上传文件?
- java - JSPG0036E: 找不到资源 jsp
- php - 如何在给定数组所有序列号 1 到 n 的情况下创建输出 true 或 false 的 php 函数
- mysql - 在 Mysql 过程中似乎找不到错误 Error 1064 (42000)
- javascript - setTimeout 函数中的第三个参数是什么?