Python 如何知道代数运算的精度是否正在下降?

Python 如何知道代数运算的精度是否正在下降?,python,largenumber,Python,Largenumber,每个人。。。我在ubuntu操作系统上使用Python3。 代数运算有特殊限制吗?例如,我使用了一个表达式,将几个因子的乘积相加。范例 - 19 * a[15] * a[16]**5 - 19 * a[15] * a[18]**15 + 114 * a[15]**2 * a[18]**11 - 228 * a[15]**3 * a[18]**7 + 19 * a[15]**4 * a[16] + 95 * a[15]**4

每个人。。。我在ubuntu操作系统上使用Python3。 代数运算有特殊限制吗?例如,我使用了一个表达式,将几个因子的乘积相加。范例

      -  19 * a[15] * a[16]**5 
    -  19 * a[15] * a[18]**15 
    +  114 * a[15]**2 * a[18]**11 
    -  228 * a[15]**3 * a[18]**7 
    +  19 * a[15]**4 * a[16] 
    +  95 * a[15]**4 * a[18]**3 
    +  19 * a[16] * a[17]**8 
    + ... 
显然,整个表达式使用列表中名为“a”的每个元素

在哪里

a = [402481529333452799737856, 584701242576216277385216, 381624405337102891352064, 149810598966570642309120, 39872669983907831087104, 7677351509657277956096, 1112790794949098209280, 124591361265902845952, 10959810498173202432, 765616198595219328, 42719502536872064, 1906692221880063, 67880221932168, 1912942704676, 42095054406, 707502567, 8765436, 75402, 402]
我不知道我是否失去了精确性,我的预期反应(基于理论)是
3667707174836348186431483911144
,得到的结果是
3667707189516889659417305507748
,因为您注意到差异非常小(与中间操作中的数字大小相比)由于这个原因,我认为我在计算任务中失去了精确性。 我不能提供这么多信息。。我的道歉。
所以问题是。。。在纯python中可能会丢失精度;如果我使用不同的大数,受基本操作(加法、减法、乘积等)的影响

如果完全使用整数运算,那么就不会失去精度

如果代数运算只对有理数进行,并且避免了求数的根,则可以使用该模块,也可以避免丢失精度


否则,除非您将操作构造为上述两种情况之一,否则将失去精度。

我确信我使用的是整数。。。但是,当名为“a”的列表中只有很少的整数时(老实说,与我的示例中给出的整数相比并没有那么多),在每种情况下,我都会得到相同的数字。。。表达式由乘积和和求和组成,没有其他运算。但是整个表达式存储在一个文件中,然后由使用“eval”的函数读取。。。这可能是个问题?@Alexis:Python可以对任何大小的整数进行运算,因此使用
eval
的代码存在问题。很抱歉,我已经找到了错误所在。。。错误在于与整个过程相关的另一个模块(特别是称为poly1d的numpy函数)。换句话说:我的错误是在获取列表值的过程中。没有关系。谢谢!。