当decimal时,我非常失望。十进制(math.sqrt(2))
Decimal('1.4142135623730951454746218587388284504413604736328125')
小数点后15位的数字被证明是错误的。(尽管很高兴给你的数字远远超过15位!)
在Python中,如何获得sqrt(n)
的十进制扩展中的第一个m
正确数字?
IEEE标准双精度浮点数只有16位精度。任何使用IEEE的软件/硬件都不能做得更好:
http://en.wikipedia.org/wiki/IEEE_754-2008
您需要一个特殊的BigDecimal类实现,并实现所有数学函数来使用它。Python有这样一个东西:
https://literateprograms.org/arbitrary-precision_elementary_mathematical_functions__python_.html
你可以试试大浮漂。项目页面中的示例:
from bigfloat import *
sqrt(2, precision(100)) # compute sqrt(2) with 100 bits of precision
对十进制使用sqrt
方法
>>> from decimal import *
>>> getcontext().prec = 100 # Change the precision
>>> Decimal(2).sqrt()
Decimal('1.414213562373095048801688724209698078569671875376948073176679737990732478462107038850387534327641573')
问题内容: 我正在寻找一种以任意精度(例如点后50位数左右)计算平方根的方法。 在python中,可以使用Decimal轻松访问它: 看到强大的功能后,我浏览了文档,但没有发现任何类似的内容。 因此,我唯一的选择是编写某种数值计算方法,该方法将迭代地尝试计算答案吗? 问题答案: 这是我自己的平方根计算实现。在等待答案时,我决定尝试一下计算平方根的方法。它有很多方法,但最后我发现通过减法 pdf 链
问题内容: 根据Python整数范围内的答案,Python)应该具有“任意精度整数” 。但是这个结果显然 不是 任意精度: 根据PEP 237 ,它是任意大的(不仅仅是C类型的大小)。和维基百科说,Python的是任意精度。 那么,为什么以上代码行的结果不正确? 问题答案: 实际上,在python3中,每当您对int进行除法运算时,都会得到float。有一个执行整数除法的运算符: 这确实给出了正确
我正在用C实现一个任意精度的算术库,在实现gamma函数的时候我陷入了困境。 通过分别使用等价 和 ,我可以得到所有实数值 的范围内 的有理数 。 但是,我不知道如何计算。对于Lanczos近似(https://en.wikipedia.org/wiki/Lanczos_approximation),我需要预先计算的值p,这些值恰好计算非整数值的阶乘(?!),并且以我目前的知识无法动态计算……在实
问题内容: 我有一个numpy的2d数组[中/大型- 例如500x500]。我想找到它的元素智能指数的特征值。问题在于某些值是非常负的(-800,-1000等),并且它们的指数下溢(意味着它们非常接近零,因此numpy将其视为零)。无论如何在numpy中使用任意精度? 我做梦的方式: 我已经搜索了gmpy和mpmath的解决方案,但无济于事。任何想法都将受到欢迎。 问题答案: SymPy可以计算任
Python3 实例 平方根,又叫二次方根,表示为〔√ ̄〕,如:数学语言为:√ ̄16=4。语言描述为:根号下16=4。 以下实例为通过用户输入一个数字,并计算这个数字的平方根: 实例(Python 3.0+)# -*- coding: UTF-8 -*- # Filename : test.py # author by : www.runoob.com num = float(input('请输入
我正在寻找Python的第n个根函数/算法,但在发布之前:没有整数根,见鬼 我从哪里至少可以获得一个指南,指导如何编程生成精确的/ 对于(第一个参数是数字,第二个参数是根深度(或其他内容))不返回或的函数。 编辑:所以,你给了我这个解决方案:,当我问这个问题时,我就知道了,但它不适用于,例如,。你不能用有理数来表示,因此给出了不正确的结果