大家......我在ubuntu OS上使用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]
我不知道我是否正在失去预测,我的预期反应(基于理论)是3667707174836348186431483911144
而获得的是3667707189516889659417305507748
,因为你注意到差异非常小(相反与中间操作中的数字的大小),因此我认为我在计算任务中失去了精确性。
我不能提供这么多信息..我道歉。
所以问题是......在纯蟒蛇中可能会失去精确度;如果我使用不同的大数字,受基础操作(加法,减法,产品等)的影响?
答案 0 :(得分:1)
如果你完全用整数操作,那么不,你不会失去精确度。
如果您的代数运算只是在有理数上,并且您避免使用数字的根,那么您可以使用fractions
模块并避免精度损失。
否则,除非您将操作结构化为上述两种情况之一,否则您将失去精确度。