当前位置: 首页 > 面试题库 >

如何在Python中获得更精确的十进制值[重复]

寇坚成
2023-03-14
问题内容

这个问题已经在这里有了答案

有浮点任意精度吗? (5个答案)

4个月前关闭。

from math import sqrt


a=1e-8
b=10
c=1e-8

x1 = ((-b)-sqrt((b**2)-(4*a*c)))/(2*a)
x2 = ((-b)+sqrt((b**2)-(4*a*c)))/(2*a)

print 'x1 = {}'.format(x1)
print 'x2 = {}'.format(x2)

print (4*a*c)
print (sqrt(b**2-4*a*c))
print b**2
print 2*a

当我运行程序时,将返回:

x1 = -1e+09
x2 = 0.0

4e-16
10.0
100.0
2e-08

我需要的是x2等于-1e-9。

问题似乎出在

sqrt((b**2)-(4*a*c))

因为它给出的结果是10,显然是因为4 (10 ^ -8)(10 ^ -8)几乎等于0,并且被python认为是0。

结果是:

sqrt((b**2)-(4*a*c)) = sqrt(b**2) = sqrt(10**2) = 10

任何帮助将不胜感激


问题答案:

使用十进制模块:

from decimal import Decimal
a = Decimal('1E-8')
b = 10
c = Decimal('1E-8')
x1 = ((-b)-((b**2)-(4*a*c)).sqrt())/(2*a)
x2 = ((-b)+((b**2)-(4*a*c)).sqrt())/(2*a)
print 'x1 = {}'.format(x1)
print 'x2 = {}'.format(x2)

结果是

x1 = -999999999.999999999000000000
x2 = -1.0000000000E-9


 类似资料:
  • 我想从现有的浮点数中提取1个十进制浮点数。 我在Objective-C中做过:使浮点只显示两位小数 知道如何在Swift中实现吗?

  • 我从数据库获取的值为10.00520.00,但当我绑定到输入时,它显示为10和520 实例 值绑定到文本框为10,但我希望绑定10.00

  • 问题内容: 我有一些Perl代码,其中hex()函数将十六进制数据转换为十进制。如何在Python上执行此操作? 问题答案: 如果用“十六进制数据”表示字符串形式 您可以使用 将其转换为整数并 将其转换为十进制字符串。

  • 问题内容: 我需要一种编程方式来获取字符串中每个字符的十进制值,以便将它们编码为HTML实体,例如: UTF-8: 小数: 问题答案: 我怀疑您只是对从转换为,这是隐式的: 编辑:如果要处理代理对,则可以使用类似以下内容的方法:

  • 问题内容: 我想在Java中将双数取整,以便将其转换为最接近的十分位数,如下所示。 我该怎么办实际上我的意图是在图表上设置Y轴,如果最大值为0.1,则num_间隔将设置为.01,如果最大值为0.3,则转换为1,然后将num_间隔设置为.1,依此类推。 问题答案: 尝试将其翻译成您的语言,我已经用Matlab编写了它,但是它应该很明显 当然,这只有在积极的情况下才有效。

  • 我想在shell脚本中使用十进制值,但它不起作用。我没有得到十进制值。很少有帖子建议使用linux的“bc”实用程序。但是在我的机器上没有安装“bc”,我没有安装任何实用程序的权限。现在可以在没有bc的情况下处理十进制值了。演示代码-: 输出-: