0
每个人...我在Ubuntu操作系统上使用python 3。 代数操作有一个解除限制吗?例如,我正在使用一个表达式来总结几个因素的乘积。示例如何知道我是否失去了代数运算的精度?
- 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]
如果我失去precission我不知道,我期望的响应(总部设在理论)是3667707174836348186431483911144
,得到的是3667707189516889659417305507748
,因为你注意到性差异非常小(在与中间操作中的数字大小形成对比),因此我认为我在计算任务中放松了精确度。 我不能给这么多的信息..我的道歉。 所以问题是......有可能在纯python中失去精度;如果我使用不同的大数字,受基本操作(增加,减少,产品等)的影响?
我相信我使用整数......但是当列表名称为“a”的列表中有少量整数(并且说实话并不比我的例子中给出的要小),在每种情况下,我都会得到相同的数字。 ..表达是由产品和款项构成的,没有其他操作。但整个表达式存储在一个文件中,然后通过使用“eval”的函数读取......这可能是一个问题? – Alexis
@Alexis:Python可以对任何大小的整数进行操作,所以这是使用'eval'的代码的问题。 – Blender
我的歉意,我找到了错误在哪里......错误是与整个过程相关的另一个模块(特别是numpy函数称为poly1d)。换句话说:我的错误在于获取列表的值。没关系。非常感谢!。 – Alexis